正则表达式速查

2021-01-22  本文已影响0人  萨姆老了

正则表达式速查

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

常用代码

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

\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) 结果:空
上一篇 下一篇

猜你喜欢

热点阅读