正则表达式

Posted by Faushine on August 29, 2019

语法

^ : 匹配输入字符串开始的位置。

$ : 匹配输入字符串的结尾位置。

() : 标记一个子表达式的开始和结束位置。

* : 匹配前面的子表达式零次或多次。

+ : 匹配前面的子表达式一次或多次。

? : 匹配前面的子表达式零次或一次。

. : 匹配除换行符 \n 之外的任何单字符。

[ : 标记一个中括号表达式的开始。

\ : 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

{ : 标记限定符表达式的开始。

| : 指明两项之间的一个选择。

{n,m} : m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

\d : 匹配数字

\w : 匹配字母或数字或下划线或汉字

\b : 匹配单词的开始或结束

分组

() 来指定子表达式,可以对子表达式进行操作。

反义

\W : 匹配任意不是字母,数字,下划线,汉字的字符

\S : 匹配任意不是空白符的字符

\D : 匹配任意非数字的字符

\B : 匹配不是单词开头或结束的位置

[^x] : 匹配除了x以外的任意字符

[^aeiou] : 匹配除了aeiou这几个字母以外的任意字符

反向引用

后向引用用于重复搜索前面某个分组匹配的文本。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为 1,第二个为 2,以此类推。例如,\1 代表分组 1 匹配的文本。

\b(\w+)\b\s+\1\b : 匹配两个连续的相同单词。

\b(\w+)\b : 单词的开始和结束之间包含多于一个的字母或数字,这个单词会被捕获到编号为 1 的分组中。

\s+ : 1 个或几个空白符。

\1\b : 分组 1 中捕获的内容。

(.)\1 : 匹配两个连续的相同字符。