简单介绍一下正则表达式相关知识(内容主要从这里提取的)。正则表达式就是记录文本规则的代码。
元字符
常见的元字符有. ,*,?,\d,\s,\w,\b,+,$,^等。.匹配换行符以外的任意字符,*表示它前面的内容可以连续使用任意次,他俩连在一块就表示不包含换行符的任意字符串,?表示重复零次或一次,\d匹配一位数字,\s匹配任意的空白符,\w匹配字母或数字或下划线或汉字等,\b匹配单词的开始或结束,+匹配1次或任意次。$匹配字符串的结束。.^匹配字符串的开始。
举个简单的例子,^\d{6,12}$匹配以数字开头,长度大于6,小于12的数字串。
重复
.,*,+,{2},{6,12}都表示重复的方式
字符类
用[]表示,[aeiou]匹配任意一个元音字母,[0-9]等同于\d.
分歧条件
用|符号把不同的规则分隔开,满足一个规则就符合规则。
分组
如果我们想要重复多个字符,可以用小括号指定子表达式,叫做分组。
反义
\W,\S,\D等,\W匹配任意不是字母数字下划线汉字的字符,\S匹配任意不是空白字符的字符,\D匹配任意非字符的字符
后向引用
在匹配的规则的表达式中,如果包含分组,就自动会从左到右给分组一个序号,用\1,\2表示。在表达式或其他程序中可以用\1来引用这些分组而不用重复的编写规则。
零宽断言
匹配某些内容之前或之后的字符串,(?=exp)匹配exp前面的部分,(?<=exp)匹配exp后面的部分,这两种匹配 的结果都不包含exp本身。
负向零宽断言
表示断言此位置之前或之后不能出现exp,其中(?!exp)表示之后不能出现exp,(?<!exp)表示之前不能出现exp。
贪婪与懒惰
直接用例子来说明比较方便,例如,表达式a.*b匹配字母a和b之间的内容,默认情况下会匹配尽可能多的字符,例如aabaab,会匹配得到aabaab,而如果在表达式之后加上一个?,就会匹配最短的内容,a.*?b再次来匹配时,就会得到ab,ab