共计 1083 个字符,预计需要花费 3 分钟才能阅读完成。
正则表达式速查
正则表达式默认为“贪心”,最大匹配;
在量词后加? 可改为“非贪心”
罕用代码
匹配要求 | 代码 |
---|---|
任意汉字 | [u4e00-u9fa5] |
Enter 回车符 | rn |
\r \n \r\n 理论利用中的区别 存疑
量词
量词位于字符前面,在搜寻时限度字符的数量
代码 | 含意 |
---|---|
{m} | m 个 |
{m,n} | m 到 n 个 |
* | 0 到任意个 |
+ | 1 到任意个 |
? | 0 到 1 个 |
字符
代码 | 助记 | 含意 | 例句 |
---|---|---|---|
. | … 示意省略号 | 任意字符(不包含换行符) | |
[A-Z] | – | […]示意区间中的任意字符 | |
d | digit 数字 | 从 0 到 9 的数字 | |
s S | symbol 符号 | s 任意空白字符,S 任意非空字符 | |
w W | word 单词 | w 代表 word, 匹配字母、数字或下划线字符线,W 是 w 的反集 | |
() | 示意子表达式 | ||
n | newline 另一行 | 换行符 | |
r | return 回车 | 回车符 | |
^ | – | 字符开始,[]中的 ^ 示意逻辑非“¬” | |
$ | – | 字符完结 | |
\ | – | 逻辑或 |
分组
(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) 后果:空 |
正文完