正则表达式字符对应表

Michal_CH 贡献于2013-02-26

作者 SkyUN.Org  创建于2011-10-22 05:06:00   修改者SkyUN.Org  修改于2011-10-22 05:44:00字数4070

文档摘要:一. 匹配字符   二. 重复字符   三.  定位字符注:定位字符可以应用于字符或组合,放在字符串的左端或右端   四. 分组字符   五. 决策字符注:上面表中列出的字符强迫处理器执行一次if-else决策
关键词:

一.      匹配字符 字符类 匹配的字符 举  例 \d 从0-9的任一数字 \d\d匹配72,但不匹配aa或7a \D 任一非数字字符 \D\D\D匹配abc,但不匹配123 \w 任一单词字符,包括A-Z,a-z,0-9和下划线 \w\w\w\w匹配Ab-2,但不匹配∑£$%*或Ab_@ \W 任一非单词字符 \W匹配@,但不匹配a \s 任一空白字符,包括制表符,换行符,回车符,换页符和垂直制表符 匹配在HTML,XML和其他标准定义中的所有传统空白字符 \S 任一非空白字符 空白字符以外的任意字符,如A%&g3;等 . 任一字符 匹配除换行符以外的任意字符除非设置了MultiLine先项 […] 括号中的任一字符 [abc]将匹配一个单字符,a,b或c. [a-z]将匹配从a 到z的任一字符 [^…] 不在括号中的任一字符 [^abc]将匹配一个a、b、c之外的单字符,可以a,b或A、B、C [a-z]将匹配不属于a-z的任一字符,但可以匹配所有的大写字母       二.      重复字符 重复字符 含  义 举  例 {n} 匹配前面的字符n次 x{2}匹配xx,但不匹配x或xxx {n,} 匹配前面的字符至少n次 x{2}匹配2个或更多的x,如xxx,xxx.. {n,m} 匹配前面的字符至少n次,至多m次。如果n为0,此参数为可选参数 x{2,4}匹配xx,xxx,xxxx,但不匹配xxxxx ? 匹配前面的字符0次或1次,实质上也是可选的 x? 匹配x或零个x + 匹配前面的字符0次或多次 x+ 匹配x或xx或大于0的任意多个x * 匹配前面的字符0次或更多次 x* 匹配0,1或更多个x       三.      定位字符 定位字符 描  述 ^ 随后的模式必须位于字符串的开始位置,如果是一个多行字符串,则必须位于行首。对于多行文本(包含回车符的一个字符串)来说,需要设置多行标志 $ 前面的模式必须位于字符串的未端,如果是一个多行字符串,必须位于行尾。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 \A 前面的模式必须位于字符串的开始位置,忽略多行标志 \z 前面的模式必须位于字符串的未端,忽略多行标志 \Z 前面的模式必须位于字符串的未端,或者位于一个换行符前 \b 匹配一个单词边界,也就是一个单词字符和非单词字符中间的点。要记住一个单词字符是[a-zA-Z0-9]中的一个字符。位于一个单词的词首 \B 匹配一个非单词字符边界位置,不是一个单词的词首 注:定位字符可以应用于字符或组合,放在字符串的左端或右端       四.      分组字符 分组字符 定  义 举  例 () 此字符可以组合括号内模式所匹配的字符, 它是一个捕获组,也就是说模式匹配的字符作为最终设置了ExplicitCapture选项―― 输入字符串为:ABC1DEF2XY 匹配3个从A到Z的字符和1个数字的正则表达式:([A-Z]{3}\d) 将产生两次匹配:Match 1=ABC1;Match 默认状态下字符不是匹配的一部分 2=DEF2 每次匹配对应一个组:Match1 的第一个组=ABC;Match2的第1个组=DEF 有了反向引用,就可以通过它在正则表达式中的编号以及C#和类Group,GroupCollection来访问组。如果设置了ExplicitCapture选项,就不能使用组所捕获的内容 (?:) 此字符可以组合括号内模式所匹配的字符, 它是一个非捕获组,这意味着模式所的字符将不作为一个组来捕获,但它构成了最终匹配结果的一部分。它基本上与上面的组类型相同,但设定了选项ExplicitCapture 输入字符串为:1A BB SA 1 C 匹配一个数字或一个A到Z的字母,接着是任意单词字符的正则表达式为:(?:\d|[A-Z]\w) 它将产生3次匹配:每1次匹配=1A;每2次匹配=BB; 每3次匹配=SA 但是没有组被捕获 (?) 此选项组合括号内模式所匹配的字符,并用尖括号中指定 的值为组命名。在正则表达式中,可以使用名称进行反向引用,而不必使用编号。即使不设置ExplicitCapture选项,它也是一个捕获组。这意味着反向引用可以利用组内匹配的字符,或者通过Group类访问 输入字符串为:Characters in Sienfeld included Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能够匹配它们的姓名,并在一个组llastName中捕获姓的正则表达式为:\b[A-Z][a-z]+(?[A-Z][a-z]+)\b 它产生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza 每一次匹配都对应了一个lastName组: 第1次匹配:lastName group=Seinfeld 第2次匹配:lastName group=Benes 第3次匹配:lastName group=Kramer 第4次匹配:lastName group=Costanza 不管是否设置了选项ExplictCapture,组都将被捕获 (?=) 正声明。声明的右侧必须是括号中指定的模式。此模式不构成最终匹配的一部分 正则表达式\S+(?=.NET)要匹配的输入字符串为:The languages were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal 将产生如下匹配:〕 C# VB JScript (?!) 负声明。它规定模式不能紧临着声明的右侧。此模式不构成最终匹配的一部分 \d{3}(?![A-Z])要匹配的输入字符串为:123A 456 789 111C 将产生如下匹配: 456 789 (?<=) 反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最终匹配的一部分 正则表达式(?<=New)([A-Z][a-z]+)要匹配的输入字符串为:The following states,New Mexico,West Virginia,Washington,New England 它将产生如下匹配: Mexico England (?) 非回溯组。防止Regex引擎回溯并且防止实现一次匹配 假设要匹配所有以“ing”结尾的单词。输入字符串如下:He was very trusing 正则表达式为:.*ing 它将实现一次匹配――单词trusting。“.” 匹配任意字符,当然也匹配“ing”。所以,Regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing 它将实现0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,从而匹配失败       五.      决策字符 字  符  描  述 举  例 (?(regex)yes_regex|no_regex) 如果表达式regex匹配,那么将试图匹配表达式yes。否则匹配表达式no。正则表达式no是可先参数。注意,作出决策的模式宽度为0.这意味着表达式yes或no 将从与regex表达式相同的位置开始匹配 正则表达式(?(\d)dA|A-Z)B)要匹配的输入字符串为:1A CB 3A 5C 3B 它实现的匹配是: 1A CB 3A (?(group name or number)yes_regex|no_regex) 如果组中的正则表达式实现了匹配,那么试图匹配yes正则表达式。否则,试图匹配正则表达式no。no是可先的参数 正则表达式  (\d7)?-(?(1)\d\d[A-Z]|[A-Z][A-Z]要匹配的输入字符串为: 77-77A 69-AA 57-B 它实现的匹配为: 77-77A -AA 注:上面表中列出的字符强迫处理器执行一次if-else决策       六.      替换字符 字  符 描  述 $group 用group指定的组号替换 ${name} 替换被一个(?)组匹配的最后子串 $$ 替换一个字符$ $& 替换整个的匹配 $^ 替换输入字符串匹配之前的所有文本 $’ 替换输入字符串匹配之后的所有文本 $+ 替换最后捕获的组 $_ 替换整个的输入字符串 注:以上为常用替换字符,不全       七.      转义序列 字  符 描  述 \\ 匹配字符“\” \. 匹配字符“.” \* 匹配字符“*” \+ 匹配字符“+” \? 匹配字符“?” \| 匹配字符“|” \( 匹配字符“(” \) 匹配字符“)” \{ 匹配字符“{” \} 匹配字符“}” \^ 匹配字符“^” \$ 匹配字符“$” \n 匹配换行符, 等价于 \x0a 和 \cJ。 \r 匹配回车符,等价于 \x0d 和 \cM。 \t 匹配制表符, 等价于 \x09 和 \cI。 \v 匹配垂直制表符,等价于 \x0b 和 \cK \f 匹配换页符。等价于 \x0c 和 \cL。 \nnn 匹配一个8进数字,nnn指定的ASCII字符。如\103匹配大写的C \xnn 匹配一个16进数字,nn指定的ASCII字符。如\x43匹配大写的C \unnnn 匹配由4位16进数字(由nnnn表示)指定的Unicode字符 \cV 匹配一个控制字符,如\cV匹配Ctrl-V \cX 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符 \xn 匹配n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。 \nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若  n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。        

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档