正则表达式 备忘录

来源:互联网 发布:单片机做成mp3 编辑:程序博客网 时间:2024/06/12 09:00

相关概念:

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

原创粉丝点击