相关概念:
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) | 匹配前面不是exp的位置 | 零宽度负回顾后发断言 |
7、注释
(?#comment):括号里的?#后面的为注释
参考网站:https://deerchao.net/tutorials/regex/regex.htm