正则笔记
. 匹配除了换行符以外的任意字符
常用的限定符
* 匹配数量 *前边的内容可以连续重复出现任意次(可能是0次)
+ 匹配重复1次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
\b \b 表示单词的开头或者结尾 匹配某个单词用
\B \B(B大写) 匹配不是单词开头或结束的位置
\d 匹配任意的数字 {2} ({8})的意思是前面\d必须连续重复匹配2次(8次)。
\D(D大写) 匹配任意非数字的字符
\s 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\S(S大写) 匹配任意不是空白符的字符
\w 匹配字母或数字或下划线或汉字等。
\W(W大写) 匹配任意不是字母,数字,下划线,汉字的字符
^ 匹配字符串的开始
用到^和$后 整个字符串都要用^$中间的来匹配
有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^和$的意义就变成了 匹配行的开始处和结束处。
$ 匹配字符串的结束
如果你想查找元字符本身的话 必须使用\来取消这些字符的特殊意义 \.和\*还有\\
[ ] 匹配括号里的任意一个匹配的 可以指定范围 如[0-9a-zA-Z]
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
替换指的是有几种规则,如果满足其中任意一种规则都应该当成匹配具体方法是用|把不同的规则分隔开
使用替换时,顺序是很重要的
分组 用小括号来指定子表达式(也叫做分组)
分组语法
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言
(?=exp) 匹配exp前面的位置 比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分
(?<=exp) 匹配exp后面的位置 比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释
(?#comment) 这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读