Perl模式匹配中的特殊字符用法指南
本文和大家重點討論一下Perl模式匹配中的特殊字符的用法,比如說“+”,+用于使前面的字符與后面的字符至少匹配一次,也可以任意次地進行匹配。
Perl模式匹配中的特殊字符
1.1"+"
+用于使前面的字符與后面的字符至少匹配一次,也可以任意次地進行匹配。類似于windows中*例如/d+g/能匹配的dog,dogg,dooooog/ab+/在字符串a(chǎn)bbc中匹配的將是abb,而不是ab。
1.2[]和[^]
[]意味著匹配一組字符中的一個
^表示除其之外的所有字符
例如/w[abcd]s/能匹配的was,wbs,wcs,wds
/w[^ab]s/不能匹配的was,wbs
也可以寫成如下形式
/w[a-z0-9A-Z]s/
1.3字符*和?
它們與+類似,區(qū)別在于*匹配0個、1個或多個相同字符,?匹配0個或1個該字符。
例如/de*f/匹配df、def、deeeef等;/de?f/匹配df或def。
1.4位置通配符(錨模式)
^或\A僅匹配串首
$或\Z僅匹配串尾
\b匹配單詞邊界
\B單詞內(nèi)部匹配
例如:/^def/只匹配以def打頭的字符串,/$def/只匹配以def結(jié)尾的字符串,結(jié)合起來的/^def$/只匹配字符串def(?)。\A和\Z在多行匹配時與^和$不同。
\b在單詞邊界匹配:/\bdef/匹配def和defghi等以def打頭的單詞,但不匹配abcdef。/def\b/匹配def和abcdef等以def結(jié)尾的單詞,但不匹配defghi,/\bdef\b/只匹配字符串def。注意:/\bdef/可匹配$defghi,因為$并不被看作是單詞的部分。
\B在單詞內(nèi)部匹配:/\Bdef/匹配abcdef等,但不匹配def;/def\B/匹配defghi等;/\Bdef\B/匹配cdefg、abcdefghi等,但不匹配def,defghi,abcdef。
1.5Perl模式匹配中字符轉(zhuǎn)義類
\d任意數(shù)字[0-9]
\D除數(shù)字外的任意字符[^0-9]
\w任意單詞字符[_0-9a-zA-Z]
\W任意非單詞字符[^_0-9a-zA-Z]
\s空白[\r\t\n\f]
\S非空白[^\r\t\n\f]
1.6"."
字符"."匹配除換行外的所有字符,通常與*合用。
1.7Perl模式匹配中匹配指定數(shù)目的字符
字符對{}指定所匹配字符的出現(xiàn)次數(shù)。
如:/de{1,3}f/匹配def,deef和deeef;
/de{3}f/匹配deeef;
/de{3,}f/匹配不少于3個e在d和f之間;
/de{0,3}f/匹配不多于3個e在d和f之間。
1.8指定選項
字符"|"指定兩個或多個選擇來匹配模式。如:/def|ghi/匹配def或ghi。
這些轉(zhuǎn)義符有一定的操作順序:
()模式內(nèi)存
+*?{}出現(xiàn)次數(shù)
^$\b\B錨
|選項
1.9Perl模式匹配中模式次序變量
在Perl模式匹配后調(diào)用重用部分的結(jié)果可用變量$n,全部的結(jié)果用變量$&。
$string="Thisstringcontainsthenumber25.11.";
$string=~/-?(\d+)\.?(\d+)/;#匹配結(jié)果為25.11
$integerpart=$1;#now$integerpart=25
$decimalpart=$2;#now$decimalpart=11
$totalpart=$&;#nowtotalpart=25.11
【編輯推薦】