学习记录—正则表达式-基本语法

正则表达式简介-《菜鸟教程》

正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。

正则表达式可以在文本中查找、替换、提取和验证特定的模式。

本期内容将介绍普通字符,特殊字符,限定符,定位符,贪婪和非贪婪几部分。

一.普通字符

|------------|----------------------------------------|
| [ ] | [a] 表示仅匹配字符a |
| [^ ] | [^a] 表示不匹配字符a |
| [A-B] | [A-Z] 表示匹配A~Z区间内的大写字母 |
| [a-b] | [a-z] 表示 匹配a~z区间内的小写字母 |
| . | 匹配除换行符(\n、\r)之外的任何单个字符(含空格等不可见字符) |
| [\s\S] | 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。 |
| \w | 匹配字母、数字、下划线。 |
| \d | 匹配任意一个阿拉伯数字(0 到 9)等价于 [0-9] |

二.特殊符号

|----|---------------------------------------------------------------|
| * | 匹配前面的子表达式零次或多次。 |
| + | 匹配前面的子表达式一次或多次。 |
| . | 匹配除换行符 \n 之外的任何单字符。 |
| ? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
| ^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。 |
| | | 指明两项之间的一个选择。(可以理解为 或 ,即并集 ) |

注意:许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符**\** 放在它们前面。

三.限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 *+?{n}{n,}{n,m} 共6种.

|-------|-----------------------------|
| * | 匹配前面的子表达式零次或多次。 |
| + | 匹配前面的子表达式一次或多次。 |
| ? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
| {n} | n为非负整数,匹配确定的n次 |
| {n,} | n为非负整数,至少匹配n次 |
| {n,m} | n,m为非负整数,至少匹配n次,至多匹配m次 |

注意:限定符出现在范围表达式后,将应用于整个范围表达式。

四.定位符

定位符能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

\b:用于匹配字符边界

\B:用于匹配非字符边界

注意:定位符放在目标字符前,会在字符前查找,放在目标字符后,会在字符后查找。

五.贪婪与非贪婪

贪婪:匹配从开始小于符号 (<) 到关闭 h1 标记的大于符号 (>) 之间的所有内容。

非贪婪:只匹配开始和结束 h1 标签,下面的非贪婪表达式只匹配 <h1>。

* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

例如,可能仅希望查找在类HTML标签内的内容。

通过在 *+? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配。

相关推荐
中國移动丶移不动19 小时前
Java字符编码与正则表达式深度解析
java·开发语言·正则表达式
功德+n2 天前
深入理解正则表达式及基本使用教程
正则表达式
不是二师兄的八戒2 天前
深入解析-正则表达式
正则表达式
运维搬运工2 天前
扩展正则表达式
正则表达式
我叫czc2 天前
【Python高级374】正则表达式
python·mysql·正则表达式
轩轩9902182 天前
正则表达式在JSON里报错
前端·正则表达式·前端框架
背太阳的牧羊人3 天前
在正则表达式中,\1 是用来引用第一个捕获组的内容的。捕获组是用括号 () 包裹的部分
正则表达式
背太阳的牧羊人3 天前
df.replace(regex={‘b‘: {r‘\s*\.\s*‘: np.nan}})
python·正则表达式
背太阳的牧羊人3 天前
df.replace({‘b‘: r‘\s*(\.)\s*‘}, {‘b‘: r‘\1ty‘}, regex=True)
开发语言·正则表达式·pandas
kkwlgs3 天前
正则表达式
java·正则表达式