蛋白质与多肽药物结构分析网www.tofms.org

互联网 www.tofms.orgMy Blog
如需转载本站内容,请注明资料来源于: www.tofms.org
技术】【小技巧】玩转正则表达式

【小技巧】玩转正则表达式

1  特别字符

$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ’╲n’ 或 ’╲r’。要匹配 $ 字符本身,请使

用 ╲$。   
﹝ ﹞ 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ╲﹝ 和 ╲﹞。  
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 ╲*。  
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 ╲+。  
. 匹配除换行符 ╲n之外的任何单字符。要匹配 .,请使用 ╲。  
[  标记一个中括号表达式的开始。要匹配 [,请使用 ╲[。   
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ╲?。   
╲ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ’n’ 匹配字符 ’n’。’╲n’ 匹配换行符。序

列 ’╲╲’ 匹配 ”╲”,而 ’╲﹝’ 则匹配 ”﹝”。   
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 ╲^。  
 
{ 标记限定符表达式的开始。要匹配 {,请使用 ╲{。  
| 指明两项之间的一个选择。要匹配 |,请使用 ╲|。
 

2  非打印字符   

╲cx  匹配由x指明的控制字符。例如, ╲cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 

’c’ 字符。   
╲f  匹配一个换页符。等价于 ╲x0c 和 ╲cL。  
╲n  匹配一个换行符。等价于 ╲x0a 和 ╲cJ。  
╲r  匹配一个回车符。等价于 ╲x0d 和 ╲cM。   
╲s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ ╲f╲n╲r╲t╲v]。  
╲S  匹配任何非空白字符。等价于 [^ ╲f╲n╲r╲t╲v]。  
╲t  匹配一个制表符。等价于 ╲x0Array 和 ╲cI。  
╲v  匹配一个垂直制表符。等价于 ╲x0b 和 ╲cK。 

3  pattern

﹝pattern﹞  匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在

JScript 中则使用 $0„$Array 属性。要匹配圆括号字符,请使用 ’╲﹝’ 或 ’╲﹞’。  

﹝?:pattern﹞  匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 ”或” 字符 ﹝|﹞ 

来组合一个模式的各个部分是很有用。例如, ’industr﹝?:y|ies﹞ 就是一个比 ’industry|industries’ 更简略的表达式。   

﹝?=pattern﹞  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以

后使用。例如,’Windows ﹝?=Array5|Array8|NT|2000﹞’ 能匹配 ”Windows 2000” 中的 ”Windows” ,但不能匹配 ”Windows 3.1” 

中的 ”Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在极后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的

字符之后开始。   

﹝?!pattern﹞  负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供

以后使用。例如’Windows ﹝?!Array5|Array8|NT|2000﹞’ 能匹配 ”Windows 3.1” 中的 ”Windows”,但不能匹配 ”Windows 2000” 

中的 ”Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在极后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的

字符之后开始  x|y  匹配 x 或 y。例如,’z|food’ 能匹配 ”z” 或 ”food”。’﹝z|f﹞ood’ 则匹配 ”zood” 或 ”food”。  

4  常用代码

x|y 匹配 x 或 y。例如 ”z|food” 可匹配 ”z” 或 ”food”。”﹝z|f﹞ood” 匹配 ”zoo” 或 ”food”。    
{n} n 为非负的整数。匹配恰好n次。例如,”o{2}” 不能与 ”Bob 中的 ”o” 匹配,但是可以与”foooood”中的前两个o匹配。    
{n,} n 为非负的整数。匹配至少n次。例如,”o{2,}”不匹配”Bob”中的”o”,但是匹配”foooood”中所有的o。”o{1,}”等价于”o+”

。”o{0,}”等价于”o*”。    
{n,m} m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,”o{1,3}” 匹配 ”fooooood”中前三个o。”o{0,1}”等价于”o?”。   

 
[xyz] 一个字符集。与括号中字符的其中之一匹配。例如,”[abc]” 匹配”plain”中的”a”。   
[^xyz] 一个否定的字符集。匹配不在此括号中的任何字符。例如,”[^abc]” 可以匹配”plain”中的”p”.    
[a-z] 表示某个范围内的字符。与指定区间内的任何字符匹配。例如,”[a-z]”匹配”a”与”z”之间的任何一个小写字母字符。    
[^m-z] 否定的字符区间。与不在指定区间内的字符匹配。例如,”[m-z]”与不在”m”到”z”之间的任何字符匹配。    
╲b 与单词的边界匹配,即单词与空格之间的位置。例如,”erb” 与”never”中的”er”匹配,但是不匹配”verb”中的”er”。    
╲B 与非单词边界匹配。”ea*rB”与”never early”中的”ear”匹配。   
╲d 与一个数字字符匹配。等价于[0-9]。   
╲D 与非数字的字符匹配。等价于[^0-9]。   
╲f 与分页符匹配。   
╲n 与换行符字符匹配。   
╲r 与回车字符匹配。

╲xn  匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,’╲x41’ 匹配 ”A”。’╲x041’ 则等价于 

’╲x04’ & ”1”。正则表达式中可以使用 ASCII 编码。.  
╲num  匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,’﹝.﹞╲1’ 匹配两个连续的相同字符。  
╲n  标识一个八进制转义值或一个向后引用。如果 ╲n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 

﹝0-7﹞,则 n 为一个八进制转义值。   
╲nm  标识一个八进制转义值或一个向后引用。如果 ╲nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 ╲nm 之前至少有 n 个

获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 ﹝0-7﹞,则 ╲nm 将匹配八进制转义值 

nm。   
╲nml  如果 n 为八进制数字 ﹝0-3﹞,且 m 和 l 均为八进制数字 ﹝0-7﹞,则匹配八进制转义值 nml。   
╲un  匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, ╲u00AArray 匹配版权符号 ﹝?﹞。


5  部分例子   

∕╲b﹝[a-z]+﹞ ╲1╲b∕gi 一个单词连续出现的位置   
∕﹝╲w+﹞:╲∕╲∕﹝[^∕:]+﹞﹝:╲d*﹞?﹝[^# ]*﹞∕  将一个URL解析为协议、域、端口及相对路径  
∕^﹝?:Chapter|Section﹞ [1-Array][0-Array]{0,1}$∕ 定位章节的位置  
∕[-a-z]∕ A至z共26个字母再加一个-号。  ∕ter╲b∕ 可匹配chapter,而不能terminal  
∕╲Bapt∕ 可匹配chapter,而不能aptitude   
∕Windows﹝?=Array5 |Array8 |NT ﹞∕ 可匹配WindowsArray5或WindowsArray8或WindowsNT,当找到一个匹配后,从Windows后面开始进行下

一次的检索匹配。

测一个字符串是否以制表符开头,可以 用这个模式:^╲t      
用╲n表示“新行”,╲r表示回车。
其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用╲╲表示,句号.用╲.表示,

[a-z] ∕∕匹配所有的小写字母    
[A-Z] ∕∕匹配所有的大写字母    
[a-zA-Z] ∕∕匹配所有的字母    
[0-Array] ∕∕匹配所有的数字     
[0-Array╲.╲-] ∕∕匹配所有的数字,句号和减号    
[ ╲f╲r╲t╲n] ∕∕匹配所有的白字符
^[a-z][0-Array]$ ∕∕匹配一个由一个小写字母和一位数字组成的字符串,比如”z2”但不是”ab2”      

^[^0-Array][0-Array]$ ∕∕ 匹配”&5”、”g7”及”-2”不匹配”12”、”66”. 在方括号里使用^,表示“非”或“排除”

^[a-zA-Z_]$ 所有的字母和下划线     
^[[:alpha:]]{3}$ 所有的3个字母的单词    
^a{4}$ aaaa     
^a{2,4}$ aa,aaa或aaaa    
^a{1,3}$ a,aa或aaa     
^a{2,}$ 包含多于两个a的字符串     
╲t{2} 两个制表符    
.{2} 所有的两个字符
{x}的意思是“前面的字符或字符簇只出现x次”
{x,}的意思是“前面的内容出现x或更多的次数”;
{x,y}表示“前面的内容至少出现x次,但不超过y次”

^[a-zA-Z0-Array_]{1,}$ ∕∕所有包含一个以上的字母、数字或下划线的字符串    
^[0-Array]{1,}$ ∕∕所有的正数     
^╲-{0,1}[0-Array]{1,}$ ∕∕所有的整数     
^╲-{0,1}[0-Array]{0,}╲.{0,1}[0-Array]{0,}$ ∕∕所有的小数


更多精彩文章,请关注公众号 【药网堂】

All rights reserved , visit the micromessage 药网堂 for more @ tofms_org@126.com


【wkh, 2014-02-26 22:13:19】 【责任人 wkh】 [已阅读 1088 次]


Email:tofms_org@126.com 【有疑问,发邮件】


© 2008- All Rights Reserved, Powered by WKH© 2008