正则表达式 备忘录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suifeng2018/article/details/76605254

相关概念:

1、什么是正则表达式?

描述字符串的规则的工具

1、元字符

字符 作用
. 除换行符之外的任意字符
\w 字母、数字、下划线
\s 空白符
\d 任意数字
\b 单词开始 或结束
^ 字符串开始
$ 字符串结束

2、字符转义

对于“ . ”、 “ * ” 、“ \ ” 等本身有特殊作用的字符的匹配,需在前面加斜杠\,如. * \

3、重复匹配

字符 作用
? 0或1次
+ 0或多次
* 1或多次
{n} n次
{n,} n次及n次以上
{m,n} m次到n次

4、字符类 [ ]

特殊符号 :音标、罗马数字 空格 等 用 [< >aeiou] 中括号表示
[]里放1234abc等具体字符,如[0-9]等同于\d,-在这里表范围

5、分支条件(|: 匹配多种情况)

| 分隔多个条件

6、分组 即 子表达式 ()

圆括号包裹 ,匹配字符串重复的情况,
例如 ip 的匹配:

((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

7、反义 (匹配 非… 的情况)

注意是大写字母
字符 作用
\W 匹配不是字母、数字、下划线、汉字(.net有)
\S 非空白符
\D 非数字
\B 非单词开始 或结束的位置
[^x] 除x以外的字符
[^aeiou] 除aeiou以外字符

匹配不含空格的字符串:\S+

7、捕获分组 与 后向引用 ()

()圆括号内包裹表达式,即为一个分组,匹配表达式的文本即为分组捕获内容,不指定分组名,会获得默认分组名:从左至右依次为1、2、3、4,指定分组名的组号都大于未命名分组

(\D\w+)                 \\未命名
(?<noNumStart>\D|w+)  \\命名为noNumStart 
(?:\D\w+)       \\匹配,但不捕获匹配的文本,不分配组号

分组匹配过一次,后面还要匹配 即可使用后向引用:

\b(\w+)\b\s+\1\b  不指定分组名
或
\b(?<test>\w+)\b\s+\k<test>\b  指定分组名

7、零宽断言

表达式 含义 称谓
(?=exp) 匹配exp前面的位置 零宽度正预测先行断言
(?<=exp) 匹配exp后面的位置 零宽度正回顾后发断言
(?!xp) 匹配后面不是exp的位置 零宽度负预测先行断言
(? 匹配前面不是exp的位置 零宽度负回顾后发断言

7、注释

(?#comment):括号里的?#后面的为注释

参考网站:https://deerchao.net/tutorials/regex/regex.htm

猜你喜欢

转载自blog.csdn.net/suifeng2018/article/details/76605254