关于正则表达式:正则表达式速查

54次阅读

共计 1083 个字符,预计需要花费 3 分钟才能阅读完成。

正则表达式速查

正则表达式默认为“贪心”,最大匹配;
在量词后加? 可改为“非贪心”

罕用代码

匹配要求代码
任意汉字[u4e00-u9fa5]
Enter 回车符rn

\r \n \r\n 理论利用中的区别 存疑

量词

量词位于字符前面,在搜寻时限度字符的数量

代码含意
{m} m 个
{m,n} m 到 n 个
* 0 到任意个
+ 1 到任意个
? 0 到 1 个

字符

代码助记含意例句
.… 示意省略号任意字符(不包含换行符)
[A-Z][…]示意区间中的任意字符
ddigit 数字从 0 到 9 的数字
s Ssymbol 符号 s 任意空白字符,S 任意非空字符
w Wword 单词 w 代表 word, 匹配字母、数字或下划线字符线,W 是 w 的反集
() 示意子表达式
nnewline 另一行换行符
rreturn 回车回车符
^字符开始,[]中的 ^ 示意逻辑非“¬”
$字符完结
\ 逻辑或

分组

(abc)? 示意 0 个或 1 个 abc 这里一 个括号的表达式就示意一个分组。

捕捉组

1. 分组的编号

从左到右计算其开括号来编号

例:
表达式:(A)(B(C))

编号分组
0(A)(B(C))
1(A)
2(B(C))
3(C)

2.Back 援用

反向援用,援用的是后面捕捉组中的文本而不是正则,也就是说反向援用处匹配的文本应和后面捕捉组中的文本雷同

例:字符串:帅哥 123456 帅锅 — 帅哥 123456 帅哥
表达式①:;后果:
表达式②:;后果:

3. 分组列举

非捕捉组

以 (?) 结尾,不捕捉文本,不存在 backref 反相援用

代码含意例句
(?:Pattern)匹配 Pattern 字符字符串:indestry 哈哈哈哈 indestries 正则:indestr(y\ies)或者 indestr(?:y\ies) 后果:indestry 或者 indestries
(?<=X)X,通过零宽度的正 lookbehind字符串:name:wangfei 正则:(?<=name:)(wangfei) 后果:wangfei
(?=X)X,通过零宽度的正 lookahead字符串:product_path 正则:(product)(?=_path) 后果:product
(?<!X)X,通过零宽度的负 lookbehind字符串:name:angelica 正则:(?<!nick_name:)(angelica) 后果:angelica;
字符串:name:angelica 正则:(?<!name:)(angelica) 后果:空
(?!X)X,通过零宽度的负 lookahead字符串:product_path 正则:(product)(?!_url) 后果:product;
字符串:product_path 正则:(product)(?!_path) 后果:空
正文完
 0