正则表达式语法

阿里云服务器

正则表达式(Regular Expression)是一种用来匹配和操作文本模式的工具。它由一组特殊的字符和规则组成,可以用来搜索、替换、验证和过滤文本。正则表达式语法是用于编写正则表达式的规则和指令。

以下是一些常见的正则表达式语法:

元字符:

.:匹配任意字符(除了换行符)。

^:匹配字符串的开头。

$:匹配字符串的结尾。

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

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

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

{n}:匹配前面的子表达式恰好n次。

{n,}:匹配前面的子表达式至少n次。

{n,m}:匹配前面的子表达式至少n次,但不超过m次。

字符类:

[abc]:匹配方括号内的任意字符(在本例中为a、b或c)。

[^abc]:匹配除了方括号内的任意字符。

转义特殊字符:

\d:匹配任何十进制数字。

\D:匹配任何非数字字符。

\s:匹配任何空白字符。

\S:匹配任何非空白字符。

\w:匹配任何字母数字字符。

\W:匹配任何非字母数字字符。

锚点:

\b:单词边界。

\B:非单词边界。

选择符:

|:表示选择,例如:(cat|dog)将匹配“cat”或“dog”。

注释:

(?:pattern) :非捕获分组,用于分组,但不捕获匹配项。

贪婪模式和懒惰模式:

默认情况下,正则表达式是贪婪的,即尽可能多地匹配。要修改为懒惰模式,可以在元字符后面添加一个问号。例如,“o+?” 将匹配尽可能少的“o”,而“o+?” 将匹配尽可能多的“o”。

反向字符类:

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

[^aeiou]:匹配除了元音字母a、e、i、o、u以外的任何字符。

捕获组:

(pattern) :捕获组,用于捕获匹配的文本,可以重复使用或命名。

命名捕获组:

(?<name>pattern) :命名捕获组,用于给捕获的文本命名,以便在后面的正则表达式中引用。

后向引用:

\n :引用第n个捕获组(\1是第一个,以此类推)。例如,“\1”将引用第一个捕获组,“\2”将引用第二个捕获组。

负向后向引用:

(?!pattern) :负向后向引用,表示后面的文本不应该是这样。例如,“foo(?!bar)”将匹配“foobar”中的“foo”,但不匹配“foobart”。

前瞻断言:

(?=pattern) :前瞻断言,表示前面的文本应该是这样。例如,“.(?=go)”将匹配“everythinggoes”中的“e”,但不匹配“going”。