正则表达式(RegEx)集合(初级)

正则表达式(RegEx)集合(初级)

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式中的符号

符号 描述 示例
str 匹配文本字符串的字面值str abc
str1|str2 匹配正则表达式str1|str2 abc|bca
. 匹配任何字符(除\n) abc.abc
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 /str1/*str2$
* 匹配0次或者多次前面出现的正则表达式 [A-Za-z0-9]*
+ 匹配1次或者多次前面出现的正则表达式 [a-z]+\.com
? 匹配0次或者1次前面出现的正则表达式 str?
{N} 匹配N次前面出现的正则表达式 [A-Z]{3}
{M,N} 匹配M到N次(包括M和N)前面出现的正则表达式 [0,9]{3,6}
[…] 匹配括号中说明的字符集的任意单一字符 [abc]
[…x-y…] 匹配x-y范围中的任意单一字符 [A-Za-z0-9]
[^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) [^aedv],[^A-Z]
(*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{}) .*?[A-Z]
(…) 匹配封闭的正则表达式,然后另存为子组 (A(B(C)))

正则表达式中的特殊字符

特殊字符 描述 示例
\d 匹配任何十进制数字,与[0-9]一致(\D与\d相反,不匹配任何十进制数字) f\d.txt
\w 匹配任何字母数字字符,与[A-Za-z0-9]相同(\W与之相反) [A-Za-z]\w+
\s 匹配任何空格字符,与[\n\t\r\v\f]相同(\S与之相反) of\sthe
\b 匹配任何单词边界(\B与之相反) \bThe\b
\N 匹配已保存的子组N(参见上面的(…)) price:\16
\c 逐字匹配任何特殊字符c(即,仅按照字面意义匹配,不匹配特殊含义) \.,\\,\*
\A(\Z) 匹配字符串的起始(结束)(如上面介绍的^和$) \ADear

正则表达式中的扩展表示法

(?str)

在正则表达式中嵌入一个或者多个特殊“标记”参数(或者通过函数/方法)

(?:…)

表示一个匹配不用保存的分组

(?P<name>)

向一个仅由name标识而不是数字ID标识的正则分组匹配

(?P=name)

在同一字符串中匹配由(?P)分组的之前文本

(?#…)

表示注释,所有内容都被忽略

(?=…)

匹配条件是如果…出现在之后的位置,而不使用输入字符串;称作正向前视断言

(?!…)

匹配条件是如果…不出现在之后的位置,而不使用输入字符串;称作负向前视断言

(?<=…)

匹配条件是如果…出现在之前的位置,而不使用输入字符串;称作正向后视断言

(?<!…)

匹配条件是如果…不出现在之前的位置,而不是用输入字符串;称作负向后视断言

(?(id/name)Y|N)

如果分组所提供的id或者name(名称)存在,就返回正则表达式的条件匹配Y,如果不存在,就返回N;|N是可选项(也就是说是可省略的)。ps: 有点像C++中的三目运算符

贪婪模式vs非贪婪模式

〇 贪婪模式 在整个表达式匹配成功的前提下,尽可能多的匹配

〇 非贪婪模式 在整个表达式匹配成功的前提下,尽可能少的匹配

默认是贪婪模式

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×