正则表达式语言元素

来源:互联网 发布:sql日期只取年月日 编辑:程序博客网 时间:2024/06/06 02:48
正则表达式语言元素.NET Framework 4 其他版本 Visual Studio 2008 Visual Studio 2005 此内容为质量更高的人工翻译。若想同时查看此页面和原始英文页面的内容,请单击“首选项”然后选择“经典视图”作为您的查看首选项。正则表达式是正则表达式引擎尝试匹配输入文本的一种模式。 模式由一个或多个字符文本、运算符或构造组成。 有关简单介绍,请参见 .NET Framework 正则表达式。 此快速参考中的每一节都列出了可用于定义正则表达式的字符、运算符和构造的一种特定类别。 字符转义 字符类 定位点 分组构造 限定符 反向引用构造 替换构造 替换 其他构造 字符转义 --------------------------------------------------------------------------------正则表达式中的反斜杠字符 (/) 指示其后跟的字符是特殊字符(如下表所示),或应按原义解释该字符。 有关更多信息,请参见字符转义。 转义字符 说明 模式 匹配 /a 与报警 (bell) 符 /u0007 匹配。 /a “Error!”+“/u0007”中的“/u0007” /b 在字符类中,与退格键 /u0008 匹配。 [/b]{3,} “/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/nThese are/ntwo lines.”中的“/r/nThese” /v 与垂直制表符 /u000B 匹配。 [/v]{2,} “/v/v/v”中的“/v/v/v” /f 与换页符 /u000C 匹配。 [/f]{2,} “/f/f/f”中的“/f/f/f” /n 与换行符 /u000A 匹配。 /r/n(/w+) “/r/nThese are/ntwo lines.”中的“/r/nThese” /e 与转义符 /u001B 匹配。 /e “/x001B”中的“/x001B” / 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” /c X 与 X 指定的 ASCII 控制字符匹配,其中 X 是控制字符的字母。 /cC “/x0003”中的“/x0003”(Ctrl-C) /u nnnn 使用十六进制表示形式(恰好四位数字,此处由 nnnn 表示)与 Unicode 字符匹配。 /w/u0020/w “a bc d”中的 “a b”和“c d” / 在后面带有不识别为本主题的此表和其他表中的转义符的字符时,与该字符匹配。 例如,/* 与 /x2A 相同。 这使得正则表达式引擎可以消除语言元素(例如 * 或 ?)与字符文本(由 /* 或 /? 表示)之间的歧义。 /d+[/+-x/*]/d+/d+[/+-x/*/d+ “(2+2) * 3*9”中的“2+2”和“3*9” 返回页首 字符类 --------------------------------------------------------------------------------字符类与一组字符中的任何一个字符匹配。 字符类包括下表中列出的语言元素。 有关更多信息,请参见字符类。 字符类 说明 模式 匹配 [ 字符分组 ] 与 character_group 中的任何单个字符匹配。 默认情况下,匹配区分大小写。 [ae] “gray”中的“a” “lane”中的“a”和“e” [^ 字符分组 ] 非:与不在 character_group 中的任何单个字符匹配。 默认情况下,character_group 中的字符区分大小写。 [^aei] “reign”中的“r”、“g”和“n” [ first - last ] 字符范围:与从 first 到 last 的范围中的任何单个字符匹配。 [A-Z] “AB123”中的“A”和“B” . 通配符:与除 /n 之外的任何单个字符匹配。 a.e “nave”中的“ave” “water”中的“ate” /p{ name } 与 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配。 /p{Lu} /p{IsCyrillic} “City Lights”中的“C”和“L” “ДЖem”中的“Д”和“Ж” /P{ name } 与不在 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配。 /P{Lu} /P{IsCyrillic} “City”中的“i”、“t”和“y” “ДЖem”中的“e”和“m” /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 之前。 -/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” /G 匹配必须出现在上一个匹配结束的地方。 /G/(/d/) “(1)(3)(5)[7](9)”中的“(1)”、“(3)”和“(5(” /b 匹配必须出现在 /w(字母数字)和 /W(非字母数字)字符之间的边界上。 /b/w+/s/w+/b “them theme them them”中的“them them” /B 匹配不得出现在 /b 边界上。 /Bend/w*/b “end sends endure lender”中的“ends”和“ender” 返回页首 分组构造 --------------------------------------------------------------------------------分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。 分组构造包括下表中列出的语言元素。 有关更多信息,请参见分组构造。 分组构造 说明 模式 匹配 ( 子表达式 ) 捕获匹配的子表达式并将其分配到一个从零开始的序号中。 (/w)/1 “deep”中的“ee” (?< name >子表达式) 将匹配的子表达式捕获到一个命名组中。 (?/w)/k “deep”中的“ee” (?< name1 - name2 >子表达式) 定义平衡组定义。 (((?'Open'/()[^/(/)]*)+((?'Close-Open'/))[^/(/)]*)+)*(?(Open)(?!))$ “3+2^((1-3)*(3-1))”中的“((1-3)*(3-1))” (?:子表达式) 定义非捕获组。 Write(?:Line)? “Console.WriteLine()”中的“WriteLine” (?imnsx-imnsx:子表达式) 应用或禁用 子表达式 中指定的选项。 有关更多信息,请参见正则表达式选项。 A/d{2}(?i:/w+)/b “A12xl A12XL a12xl”中的“A12xl”和“A12XL” (?=子表达式) 零宽度正预测先行断言。 /w+(?=/.) “He is. The dog ran. The sun is out.”中的“is”、“ran”和“out” (?!子表达式) 零宽度负预测先行断言。 /b(?!un)/w+/b “unsure sure unity used”中的“sure”和“used” (?<=子表达式) 零宽度正回顾后发断言。 (?<=19)/d{2}/b “1851 1999 1950 1905 2003”中的“99”、“50”和“05” (?子表达式) 非回溯(也称为“贪婪”)子表达式。 [13579](?>A+B+) “1ABB 3ABBC 5AB 5AC”中的“1ABB”、“3ABB”和“5AB” 返回页首 限定符 --------------------------------------------------------------------------------限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。 限定符包括下表中列出的语言元素。 有关更多信息,请参见限定符。 限定符 说明 模式 匹配 * 匹配上一个元素零次或多次。 /d*./d “.0”,“19.9”和“219.9” + 匹配上一个元素一次或多次。 "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 次。 "/d{2,}" “166”,“29”和“1930” { n , m } 匹配上一个元素至少 n 次,但不多于 m 次。 "/d{3,5}" “166”,“17668”以及“193024”中的“19302” *? 匹配上一个元素零次或多次,但次数尽可能少。 /d*?./d “.0”,“19.9”和“219.9” +? 匹配上一个元素一次或多次,但次数尽可能少。 "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 次,但次数尽可能少。 "/d{2,}?" “166”,“29”和“1930” { n , m }? 匹配上一个元素的次数介于 n 和 m 之间,但次数尽可能少。 "/d{3,5}?" “166”,“17668”以及“193024”中的“19302” 返回页首 反向引用构造 --------------------------------------------------------------------------------反向引用允许在同一正则表达式中随后标识以前匹配的子表达式。 下表列出了 .NET Framework 的正则表达式支持的反向引用构造。 有关更多信息,请参见反向引用构造。 反向引用构造 说明 模式 匹配 / 数值 后向引用。 匹配编号子表达式的值。 (/w)/1 “seek”中的“ee” /k< name > 命名后向引用。 匹配命名表达式的值。 (?/w)/k “seek”中的“ee” 返回页首 替换构造 --------------------------------------------------------------------------------替换构造用于修改正则表达式以启用 either/or 匹配。 这些构造包括下表中列出的语言元素。 有关更多信息,请参见备用构造。 替换构造 说明 模式 匹配 | 匹配以竖线 (|) 字符分隔的任何一个元素。 th(e|is|at) “this is the day.”中的“the”和“this”" (?( 表达式 ) yes | no ) 如果 表达式 匹配,则与 yes 部分匹配;否则,与可选的 no 部分匹配。 表达式 被解释为零宽度断言。 (?(A)A/d{2}/b|/b/d{3}/b) “A10 C103 910”中的“A10”和“910” (?( name ) yes | no ) 如果命名捕获 name 有匹配项,则与 yes 部分匹配;否则,与可选的 no 部分匹配。 (?")?(?(quoted).+?"|/S+/s) “Dogs.jpg "Yiska playing.jpg"”中的 Dogs.jpg 和 "Yiska playing.jpg" 返回页首 替换 --------------------------------------------------------------------------------替换是替换模式中支持的正则表达式语言元素。 有关更多信息,请参见替代。 下表中列出的元字符是原子零宽度断言。 字符 说明 模式 替换模式 输入字符串 结果字符串 $ 数值 替换按组 number 匹配的子字符串。 /b(/w+)(/s)(/w+)/b $3$2$1 "one two" "two one" ${ name } 替换按命名组 name 匹配的子字符串。 /b(?/w+)(/s)(?/w+)/b ${word2} ${word1} "one two" "two one" $$ 替换字符“$”。 /b(/d+)/s?USD $$$1 “103 USD” “$103” $& 替换整个匹配项的一个副本。 (/$*(/d*(/.+/d+)?){1}) **$& “$1.30” “**$1.30**” $` 替换匹配前的输入字符串的所有文本。 B+ $` “AABBCC” “AAAACC” $' 替换匹配后的输入字符串的所有文本。 B+ $' “AABBCC” “AACCCC” $+ 替换最后捕获的组。 B+(C+) $+ “AABBCCDD” AACCDD $_ 替换整个输入字符串。 B+ $_ “AABBCC” “AAAABBCCCC” 返回页首 其他构造 --------------------------------------------------------------------------------其他构造可修改某个正则表达式模式或提供有关该模式的信息。 下表列出了 .NET Framework 支持的其他构造。 有关更多信息,请参见其他构造。 构造 定义 示例 (?imnsx-imnsx) 在模式中间对诸如不区分大小写这样的选项进行设置或禁用。 有关更多信息,请参见正则表达式选项。 /bA(?i)b/w+/b 匹配“ABA Able Act”中的“ABA”和“Able” (?#注释) 内联注释。 该注释在第一个右括号处终止。 /bA(?#Matches words starting with A)/w+/b # [至行尾] X 模式注释。 该注释以非转义的 # 开头,并继续到行的结尾。 (?x)/bA/w+/b#Matches words starting with A 返回页首
原创粉丝点击