5 Pattern 参考Learning PHP5(by David Sklar)和VBScript文档
\ 将下一个字符标记为特殊字符或字面值。例如“n”与字符“n”匹配。“\n“与换行符匹配。序列”\\“与"\"匹配。"\("与"("匹配。
. 匹配换行符以外的任何字符。
x|y 匹配x或y。例如"z|food"匹配"z"或"food"。 "(z|f)oo"匹配"zoo"或"food".
Quantifiers(数量词)
* 匹配前一个字符零次或几次
+ 匹配前一个字符一次或多次
? 匹配前一个字符零次或一次
{n} n为非负的整数。匹配恰好n次
{n,} n为非负的整数。匹配至少n次
{n,m} n,m为非负的整数。匹配至少n次,至多m次
举些例子:
ba+ 意思是b,然后至少一个a 匹配ba,baa,baaa,rhumba,babar 不匹配b,abs,taaadaaa,celeste。
ba+na*s 意思是b,至少一个a,n,0个或多个a,s 匹配turbans,baanas,rhumbanas 不匹配banana, bananas。
ba(na){2} 意思是ba,然后两次na 匹配banana,bananas,semi-banana,bananarama 不匹配cabana,banarama。
ba{2,}ba{3,} 意思是b,然后至少两次a,然后b,然后至少三次a 匹配baabaaa,baaaabaaaaa,rhumbaabaaas 不匹配baabaa,babaaar,banana
(baa-){2,4}baa 意思是至少两次,最多四次baa-,然后baa 匹配baa-baa-baa,baa-baa-baa-baa-baa,comp-pa-pa-baa-baa-baa-oomp-pa-pa 不匹配baa-baa,baa-baad-news
dogs? and cats( and chickens?)? 意思是dog,然后一个可选s,然后 and cat, 然后一个可选s, 然后一个可选and chicken或and chickens 匹配dog and cat and chicken,dog and cat and chickens, hotdogs and cats, dogs and cat and chickens, dog and cats and chicken, dog and cat and chickensoup 不匹配doggies and cats,dogs and cats or chickens, dogss and catss, dog and cat and chieckenlegs
Anchors(锚)
^ 匹配输入的开始位置
$ 匹配输入的结尾
\b 与单词的边界匹配,即单词与空格之间的位置。例如,"er\b"与"never"中的"er"匹配,但是不匹配"verb"中的"er"。
\B 与非单词边界匹配。"ea*r\B"与"never early"中的"ear"匹配。
例子:
^Gre 匹配Green, Grey Lantern和Grep is my favorite 不匹配GGreen VVegetables, gre或InGres。
!$ 匹配"Zip!,""Zoom!,"和"Pow! Kablam!," 不匹配"Kerfloofie.," "! is the negation operator," "Pow! oh.,"或"!!!!?."
^ba(na)+ 匹配banana和bananarama 不匹配cabana
ba(na)_+$ 匹配banana和cabana 不匹配bananarama
^ba(na)+$ 仅匹配banana和bananana...
^(w|W|b|B)illy?$ 匹配will,Will,Bill,bill,Willy,willy,Billy和billy 不匹配Willa,billo,twill,handbill或William。
\b[fF]ish 匹配fish,go fish!,sport-fishing和Hamilton Fish High School 不匹配bluefish,sportfishing或swordfish。
Character Classes字符集
[xyz] 一个字符集,与括号中字符的其中之一匹配。例如,"[abc]"匹配"plain"中的"a"。
[^xyz] 一个否定的字符集,匹配不在此括号中的任何字符。例如,"[^abc]"匹配"plain"中的"p"。
[a-z] 表示某个范围内的字符。与指定区间内的任何字符匹配。
[^m-z] 否定的字符区间。与不在指定区间内的任何字符匹配。
\d 与一个数字字符匹配。等同[0-9]。
\D 与非数字字符匹配。等同[^0-9]。
\s 与任何空白字符匹配,包括空格,制表符,分页符等。等同"[ \f\n\r\t\v]"。
\s 与任何非空白字符匹配。等同"[^ \f\n\r\t\v]"。
\w 与任何单词字符匹配,包括下划线。等同"[A-Za-z0-9_]"。
\w 与任何非单词字符匹配。等同"[^A-Za-z0-9_]"。
\f 与分页符匹配
\n 与换行符匹配
\r 与回车符匹配
\t 与制表符匹配
VBA例子:
Sub ChangeEmail()
Dim regEx as RegExp
Set regEx = New RegExp
dim patrn as String
Dim strng as String
patrn="([^@\s]+)@(([-a-z0-9]+\.)+[a-z]{2,})"
strng="Inky T. Ghost inky@pacman.example.com" & vbCrLf & "Donkey K. gorilla kong@banana.example.com"
regEx.Patten=patrn
regEx.IgnoreCase=True
regEx.Global=True
MsgBox regEx.Replace(strng,"$1 at $2")
End Sub
patrn = "^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$" 这个判断是不是Email地址。
patrn = "^^http?:\/\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+"这个判断是不是HTTP地址。
唉,写了这么多,其实我自己也不太会用。下次说说反向引用。 |