正则表达式语言快速参考

正则表达式实体使用确定性方法通过正则表达式匹配值。 

正则表达式是正则表达式引擎尝试在输入文本中匹配的模式。 模式由一个或多个字符文字、运算符或构造组成。 正则表达式可以包含特殊字符和普通字符。 大多数普通字符,如 'A'、'a' 或 '0',都是最简单的正则表达式;它们只是匹配自己。 你可以连接普通字符,所以 last 匹配字符串 'last'。 

有些字符,例如 '|' 或 '(',是特殊的。 特殊字符要么代表普通字符的类别,要么影响它们周围的正则表达式的解释方式。

本快速参考中的每个部分都列出了可用于定义正则表达式的特定类别的字符、运算符和构造。

注意: 当前不支持捕获组和依赖捕获组的任何其他功能。

支持的 regex 功能

以下部分介绍了支持的正则表达式功能。

正则表达式中的反斜杠字符 (\) 表示它后面的字符要么是特殊字符(如下表所示),要么应按字面意思解释。

转义的角色 描述 模式 火柴
\ a 匹配一个铃铛字符,\ u0007 \ a “错误!” 中的 “\ u0007” + '\ u0007'
\ b 在字符类中,匹配退格符\ u0008 [\ b] {3,} “\ b\ b\ b\ b” 中的 “\ b\ b\ b” 在 “\ b\ b”
\ t

匹配一个选项卡\ u0009。

(\ w+)\ t “item1\ titem2\ t” 中的 “item1\ t”、“item2\ t”

\ r

匹配回车符\ u000d。 (\ r 不等同于换行符\ n。)

\ r\ n (\ w+)

“\ r\ n 这些” 中的 “\ r\ n 这些是\ n 两行。”

\ v

匹配垂直制表符\ u000B。

[\ v] {2,}

“\ v\ v\ v” 中的 “\ v\ v”

\ f

匹配表单上传数据\ u000c。

[\ f] {2,}

“\ f\ f\ f” 中的 “\ f\ f” 中的 “\ f\ f”

\ n

匹配一个新行\ u000a。

\ r\ n (\ w+)

“\ r\ n 这些” 中的 “\ r\ n 这些是\ n 两行。”

\ nnn

使用八进制表示来指定一个字符(nnn 由两个或三个数字组成)。

\ w\ 040\ w

“a bc d” 中的 “a b”、“c d”

\ x nn

使用十六进制表示来指定字符(nn 正好 由两位数字组成)。

\ w\ x20\ w

“a bc d” 中的 “a b”、“c d”

\ u nnnn

使用十六进制表示形式匹配 Unicode 字符(正好是四位数,由 nnnn 表示)。

\ w\ u0020\ w

“a bc d” 中的 “a b”、“c d”

\

如果后面跟着在本主题的本表和其他表中未被识别为转义字符的字符,则与该字符匹配。 例如,\ * 与\ x2A 相同,\. 与\ x2E 相同。 这允许正则表达式引擎消除语言元素的歧义(例如 * 或?)和字符文字(用\ * 或\? 表示)。

\ d+ [\ +-x\ *]\ d+

“(2+2) * 3*9” 中的 “2+2” 和 “3*9”

字符类与一组字符中的任何一个匹配。 字符类包括下表中列出的语言元素。

角色类 描述 模式 火柴

[ 字符组 ]

匹配 character _group 中的任何单个字符

[ae]

“灰色” “a” 中的

“a”,“lane” 中的 “e”

[^ 字符 _ 组 ]

否定: 匹配不在 character _group 中的任何单个字符。 默认情况下,characters _group 中的字符区 分大小写。

[^aei]

“统治” 中的 “r”、“g”、“n”

[ 第一个最后一个 ]

字符范围: 匹配从第一个最后一个范围内的任何单 个字符

[A-Z]

“AB123” 中的 “A”、“B”

.

通配符: 匹配除\ n 以外的任何单个字符。

a.e

“中殿” 中的 “ave” 在

“水” 中 “吃了”

\ w

匹配任何单词字符。

\ w

“ID A1.3” 中的 “I”、“D”、“A”、“1”、“3”

\ W

匹配任何非单词字符。

\ W

“ID A1.3” 中的 “”、“.”

\ s

匹配任何空格字符。

\ w\ s

“ID A1.3” 中的 “D”

\ S

匹配任何非空格字符。

\ s\ S

“int __ctr” 中的” _”

\ d

匹配任何十进制数字。

\ d

“4 = IV” 中的 “4”

\ D

匹配十进制数字以外的任何字符。

\ D

“4 = IV” 中的” “、” =”、“I”、“V”

锚点或原子零宽度断言会导致匹配成功或失败,具体取决于字符串中的当前位置,但它们不会导致引擎在字符串中前进或消耗字符。 下表中列出的元字符是锚点。 

断言 描述 模式 火柴

^

默认情况下,匹配必须从字符串的开头开始;在多行模式下,匹配必须从行的开头开始。

^\ d{3}

“901-333-” 中的 “901”

$

默认情况下,匹配必须出现在字符串的末尾或\ n 之前的字符串末尾;在多行模式下,匹配必须在行尾之前或行尾\ n 之前进行。

-\ d{3}$

“-901-333” 中的 “-333”

\ A

匹配必须出现在字符串的开头。

\ A\ d{3}

“901-333-” 中的 “901”

\ Z

匹配必须出现在字符串的末尾或\ n 之前的字符串末尾。

-\ d{3}\ Z

“-901-333” 中的 “-333”

\ Z

匹配必须出现在字符串的末尾。

-\ d{3}\ z

“-901-333” 中的 “-333”

\ b

匹配必须发生在\ w(字母数字)和\ W(非字母数字)字符之间的边界上。

\ b\ w+\ s\ w+\ b

“他们主题”、“他们主题他们” 中的 “他们主题”

\ B

匹配不得在\ b 边界上发生。

\ Bend\ w*\ b

“结束” 中的 “ends”,“ender” 在 “结束发送忍受贷款人”

分组构造描绘正则表达式的子表达式,通常捕获输入字符串的子字符串。 分组结构包括下表中列出的语言元素。 仅支持非捕获组。

分组约束 描述 模式 火柴

(?: 子表达式

定义一个非捕获组。

(?: [0-9]{4}) | (?: [0-9] [0-9] [0-9] [0-9] [0-9])

“数字是 1234” 中的 “1234”

“1 2 3 4” 中的 “数字是 1 2 3 4”

(?= 子表达式

零宽度正向前瞻断言。

\ w+ (?=\。)

“他是” 中的 “是”、“跑了” 和 “出去”。 狗跑了。 太阳出来了。”

(?! 子表达式

零宽度负向前查断言。

\ b (?!un)\ w+\ b

“不确定是否使用了统一” 中的 “当然”、“使用”

(?<= 子表达式

零宽度正向后看断言。

(?<=19)\ d{2}\ b

“1851 1999 年 1950 年 1905 年 2003” 中的 “99”、“50”、“05”

(?<! 子表达式 )

零宽度负向后看断言。

(?<!19)\d{2}\b<sajan index="1" />

“1851 1999 年 1950 年 1905 年 2003” 中的 “51”、“03”

量词指定要进行匹配,输入字符串中必须存在多少个前一个元素(可以是字符、组或字符类)的实例。 量词包括下表中列出的语言元素。 

量词 描述 模式 火柴

*

匹配前一个元素零次或多次。

\ d*\。\ d

“.0”、“19.9”、“219.9”

+

匹配上一个元素一次或多次。

“be+”

“被” 中的 “蜜蜂”,“弯曲” 中的 “be”

?

匹配前一个元素零次或一次。

“rai?n”

“跑了”、“雨”

{ n }

精确匹配前一个元素 n 次。

“,\ d{3}”

“1,043.6” 中的 “,043”、“,876”、“543” 和 “9,876,543,210” 中的 “,210”

{ n ,}

至少匹配前一个元素 n 次。

“\ d {2,}”

“166”、“29”、“1930”

{ n , m }

匹配前一个元素至少 n 次,但不超过 m 次。

“\ d {3,5}”

“193024 年” 中的 “166”、

“17668”、“19302”

*?+???

*+,但要尽可能少。  

<.*?>

'*''+''?' 限定符都是 贪婪的;它们匹配尽可能多的文字。 有时候这种行为是不希望的;如果是 RE <.*> 与 '<a> b ' 匹配<c>,它将匹配整个字符串,而不仅仅'<a>'。 正在添加 在限定符让它以 非贪婪最低限度的方 式进行比赛之后;匹配的 字符 数会尽可能少。 使用 RE <.*?> 将只匹配 “<a>”

{ n }?

正好匹配前面的元素 n 次。

“,\ d{3}?”

“1,043.6” 中的 “,043”、“,876”、“543” 和 “9,876,543,210” 中的 “,210”

{ n ,}?

匹配前一个元素至少 n 次,但匹配次数尽可能少。

“\ d {2,}?”

“166”、“29”、“1930”

{ n , m }?

在 nm 次之间匹配前一个元素,但尽可能少地匹配。

“\ d {3,5}?”

“193024” 中的 “166”、

“17668”、“193”、“024”

替代构造修改正则表达式以启用任一/或匹配。 这些结构包括下表中列出的语言元素。 

量词 描述 模式 火柴

|

匹配由竖线 (|) 字符分隔的任何一个元素。

th (?:e| is|at)

“这就是一天” 中的 “这个”、“这个”。