正则表达式语言 - 快速参考
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(?<name1name2> subexpression )
定义平衡组定义。有关更多信 息,请参见正则表达式中的分组 构造中的“平衡组定义”部分。
(((?'Open'\()[^\(\)]*)+ ((?'Close-Open'\))[^\ (\)]*)+)*(?(Open)(?!))$
“3+2^((1-3)*(3-1))”中的“((13)*(3-1))”
\p{IsCyrillic} “ДЖem”中的“Д”和“Ж”
与不在name指定的Unicode通用类别 \P{Lu} 或命名块中的任何单个字符匹配
“City”中的“i”、“t”和“y”
\w
\W \s \S \d \D 返回页首
或命名块中的任何单个字符匹配。
与任何单词字符匹配。
与任何非单词字符匹配。 与任何空白字符匹配。 与任何非空白字符匹配。 与任何十进制数字匹配。 匹配不是十进制数的任意字符。
(?<! subexpression )
零宽度负回顾后发断言。
(?<!19)\d{2}\b
“1851199919501905 2003”中的“51”和“03”
(?> subexpression )
返回页首
非回溯(也称为“贪婪”)子表 达式。
[13579](?>A+B+)
“1ABB3ABBC5AB5AC”中 的“1ABB”、“3ABB”和“5AB”
限定符
限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。限定符包括下 表中列出的语言元素。有关更多信息,请参见正则表达式中的限定符。
限定 符
说明
模式
匹配
*
匹配上一个元素零次或多次。
\d*\.\d
“.0”,“19.9”和“219.9”
+
匹配上一个元素一次或多次。
此文章由人工翻译。将光标移到文章的句子上,以查看原文。更多信息。
正则表达式语言-快速参考
.NET Framework 4.5
正则表达式是正则表达式引擎尝试匹配输入文本的一种模式。模式由一个或多个字符文本、运算符或构造组成。有关简单介 绍,请参见.NETFramework正则表达式。 此快速参考中的每一节都列出了可用于定义正则表达式的字符、运算符和构造的一种特定类别。
{n
匹配上一个元素至少n次,但次数尽可 "\d{2,}?" “166”,“29”和“1930”
,}?
能少。
{n, 匹配上一个元素的次数介于n和m之 m}? 间,但次数尽可能少。
返回页首
"\d{3,5}?" “166”、“17668” “193024”中的“193”、“024”
反向引用构造
反向引用允许在同一正则表达式中随后标识以前匹配的子表达式。下表列出了.NETFramework的正则表达式支持的反向 引用构造。有关更多信息,请参见正则表达式中的反向引用构造。
反向引用构造 说明
\number
后向引用。匹配编号子表达式的值。
\k<name> 返回页首
命名后向引用。匹配命名表达式的值。
\b
在字符类中,与退格键\u0008匹配。
\t
与制表符\u0009匹配。
\r
与回车符\u000D匹配。(\r与换行符\n不是等效的。)
\v
与垂直制表符\u000B匹配。
\f
与换页符\u000C匹配。
\n
与换行符\u000A匹配。
模式
匹配
\a [\b]{3,} (\w+)\t \r\n(\w+)
字符类
说明
模式
[
匹配character_group中的任何单个字 [ae]
character_group 符。默认情况下,匹配区分大小写。
]
[^ character_group ]
求反:与不在character_group中的任 何单个字符匹配。默认情况 下,character_group中的字符区分大 小写。
匹配
“901” “901-” “-901-333”中的 “-333”
\A 匹配必须出现在字符串的开头。
\A\d{3}
“901” “901-”
\Z 匹配必须出现在字符串的末尾或出现在字符串末尾 的\n之前。
-\d{3}\Z
“-901-333”中的 “-333”
\z 匹配必须出现在字符串的末尾。
-\d{3}\z
"\d{2,}" “166”,“29”和“1930”
{n, 匹配上一个元素至少n次,但不多于m "\d{3,5}" “166”、“17668”
m} 次。 “193024”中的“19302”
*?
匹配上一个元素零次或多次,但次数尽可 \d*?\.\d “.0”,“19.9”和“219.9”
能少。
模式 (\w)\1 (?<char>\w)\k<char>
匹配 “seek”中的“ee” “seek”中的“ee”
替换构造
替换构造用于修改正则表达式以启用either/or匹配。这些构造包括下表中列出的语言元素。有关更多信息,请参见正则表 达式中的备用构造。
替换构造 说明
模式
匹配
|
匹配以竖线(|)字符分隔的任何一个元素。
(?! subexpression )
零宽度负预测先行断言。
\b(?!un)\w+\b
“unsuresureunityused”中 的“sure”和“used”
(?<= subexpression )
零宽度正回顾后发断言。
(?<=19)\d{2}\b
“1851199919501905 2003”中 的“99”、“50”和“05”
[^aei]
匹配 “gray”中的“a” “lane”中的“a”和“e” “reign”中的“r”、“g”和“n”
[first-last] .
\p{name} \P{name}
字符范围:与从first到last的范围中的 [A-Z] 任何单个字符匹配。
“AB123”中的“A”和“B”
(?: subexpression )
定义非捕获组。
Write(?:Line)?
“Console.WriteLine()”中 的“WriteLine”
“Console.Write(value)”中 的“Write”
(?imnsximnsx:
subexpression )
应用或禁用subexpression中指 定的选项。有关详细信息,请参
字)字符之间的边界上。
的“themtheme”、“themthem”
\B 匹配不得出现在\b边界上。 返回页首
\Bend\w*\b
“endsendsendurelender”中 的“ends”和“ender”
分组构造
分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。分组构造包括下表中列出的语言元素。有 关更多信息,请参见正则表达式中的分组构造。
”、“I”和“V”
定位点
定位点或原子零宽度断言会使匹配成功或失败,具体取决于字符串中的当前位置,但它们不会使引擎在字符串中前进或使用 字符。下表中列出的元字符是定位点。有关更多信息,请参见正则表达式中的定位点。
断 言
说明
^ 匹配必须从字符串或一行的开头开始。
模式 ^\d{3}
$ 匹配必须出现在字符串的末尾或出现在行或字符串 -\d{3}$ 末尾的\n之前。
阅正则表达式选项。
A\d{2}(?i:\w+)\b
“A12xlA12XLa12xl”中 的“A12xl”和“A12XL”
(?= subexpression )
零宽度正预测先行断言。
\w+(?=\.)
“Heis.Thedogran.Thesunis out.”中 的“is”、“ran”和“out”
\P{IsCyrillic} “ДЖem”中的“e”和“m”
\w
“IDA1.3”中
的“I”、“D”、“A”、“1”和“3”
\W
“IDA1.3”中的“”、“.”
\w\s
“IDA1.3”中的“D”
\s\S
“int__ctr”中的“_”
\d
“4=IV”中的“4”
\D
“4=IV”中的“”、“=”、“
nnn 成)。
\w\040\w
“abcd”中的 “ab”和“cd”
\x
使用十六进制表示形式指定字符(nn恰好由两位数字组成)。 \w\x20\w
“abcd”中的
nn
“ab”和“cd”
\cX 匹配X或x指定的ASCII控制字符,其中X或x是控制字符的 \cC
字母。 \cx
"be+"
“been”中的“bee”,“bent”中的“be”
?
匹配上一个元素零次或一次。
"rai?n"
“ran”和“rain”
{n} 匹配上一个元素恰好n次。
",\d{3}"
“1,043.6”中的“,043”,“9,876,543,210”中 的“,876”、“,543”和“,210”
{n,} 匹配上一个元素至少n次。
同。这允许正则表达式引擎区分语言元素(如*或?)和字符 [\+-x\*\d+
(用\*或\?表示)。
返回页首
“(2+2)*3*9”中 的“2+2”和“3*9”
字符类
字符类与一组字符中的任何一个字符匹配。字符类包括下表中列出的语言元素。有关更多信息,请参见正则表达式中的字 符类。
+?
匹配上一个元素一次或多次,但次数尽可 "be+?"
“been”中的“be”,“bent”中的“be”
能少。
??
匹配上一个元素零次或一次,但次数尽可 "rai??n" “ran”和“rain”
能少。
{n}? 匹配前导元素恰好n次。
",\d{3}?"
“1,043.6”中的“,043”,“9,876,543,210”中 的“,876”、“,543”和“,210”
[\v]{2,} [\f]{2,} \r\n(\w+)
“Error!”+“\u0007”中 的“\u0007”
“\b\b\b\b”中 的“\b\b\b\b”
“item1\titem2\t”中 的“item1\t”和“item2\t”
“\r\nTheseare\ntwo lines.”中的“\r\nThese”
“\v\v\v”中的“\v\v\v”
“\f\f\f”中的“\f\f\f”
“\r\nTheseare\ntwo li ”中的“\ \ Th ”
百度文库
lines.”中的“\r\nThese”
\e
与转义符\u001B匹配。
\e
“\x001B”中的“\x001B”
\
使用八进制表示形式指定字符(nnn由二位或三位数字组
字符转义 字符类 定位点 分组构造 限定符 反向引用构造 替换构造 替换 正则表达式选项 其他构造
字符转义
正则表达式中的反斜杠字符(\)指示其后跟的字符是特殊字符(如下表所示),或应按原义解释该字符。有关更多信息,请 参见正则表达式中的字符转义。
转义 字符
说明
\a
与报警(bell)符\u0007匹配。
分组构造
说明
模式
匹配
( subexpression )
捕获匹配的子表达式并将其分配 到一个从1开始的序号中。
(\w)\1
“deep”中的“ee”
(?<name> subexpression )
将匹配的子表达式捕获到一个命 名组中。
(?
“deep”中的“ee”
<double>\w)\k<double>
通配符:与除\n之外的任何单个字符匹 a.e 配。
若要匹配文本句点字符(.或 \u002E),你必须在该字符前面加上转 义符(\.)。
“nave”中的“ave” “water”中的“ate”
与name指定的Unicode通用类别或命 名块中的任何单个字符匹配。
\p{Lu}
“CityLights”中的“C”和“L”
“\x0003”中 的“\x0003”(Ctrl-C)
\u
使用十六进制表示形式匹配Unicode字符(由nnnn正确表示
nnnn 的四位数)。
\w\u0020\w “abcd”中的 “ab”和“cd”
\
在后面带有不识别为本主题的此表和其他表中的转义符的字符 \d+[\+-
时,与该字符匹配。例如,\*与\x2A相同,而\.与\x2E相 x\*]\d+\d+
“-901-333”中的 “-333”
\G 匹配必须出现在上一个匹配结束的地方。
\G\(\d\)
“(1)(3)(5)[7](9)”中 的“(1)”、“(3)”、“(5)”
\b 匹配必须出现在\w(字母数字)和\W(非字母数 \b\w+\s\w+\b “themthemethemthem”中