正则表达式速查
正则表达式速查
正则表达式默认为“贪婪”,最大匹配;
在量词后加?可改为“非贪婪”
常用代码
匹配要求 | 代码 |
---|---|
任意汉字 | [\u4e00-\u9fa5] |
Enter回车符 | \r\n |
crlf 和 lf 是文本换行的不同方式:
crlf: "\r\n", windows系统的换行方式
lf: "\n", Linux系统的换行方式
他们之间的不同经常会导致不同会导致使用不同系统的同事之间的代码冲突问题。
量词
量词位于字符后面,在搜索时限制字符的数量
代码 | 含义 |
---|---|
m个 | |
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) 结果:空 |