8,以正規表示式進行匹配(perl筆記)
我們已經用過雙斜線的寫法來撰寫模式,比如/fred/。但事實上,這是m//運算子的簡寫。我們還可以把一對定界符放進任何一對界定符號內。例如:m(fred),m
此處的簡寫是指如果你選擇雙斜線作為界定符號,那麼你可以省略開頭的m。
2,選項修飾符
以/i來進行不區分大小寫的模式匹配
3,以/s來匹配任意字元
預設情況下,點號(.)無法匹配換行符,這對大多數“僅在單行進行匹配”的模式來講是說的通的。如果字串中含有換行符,而你希望點號能匹配它們,/s修飾符可以達成這個目的。它會將模式中的每個點號轉換成字符集[dD]所做的事,也就是匹配任何字元(包括換行符)。
4,用/x加上空白
加上/x修飾符之後,就可以在模式裡面隨意加上空白,目的是它看起來更容易閱讀,理解。
/-?d+.?d*/ #可以看明白嗎?
/ -? d+ .? d* /x
更詳細的解釋:
/
-? #一個可有可無的減號
d+ #小數點之前有一個或多個數字
.? #一個可有可無的小數點
d* #小數點之後可能會有若干個數字
/x #模式的終點
5,組合選項修飾符
在同一個樣式裡,如果要用到兩個以上的選項修飾符,則可以將它們連續在一起使用,它們彼此的先後順序並不會影響匹配的結果。
6,錨點
^ 標示字串的開頭
$ 標示字串的結尾
有時候兩個錨點也會一起使用,例如:/^s*$/,代表一個空白行
7,單詞錨點
單詞邊界錨點,它所匹配的是一個單詞的頭尾兩端。
B 非單詞邊界錨點,它會匹配任何不匹配的位置。因此,模式/searchB/會匹配searches,searching與searched,但不匹配search或
researching.
8, 繫結運算子=~
匹配$_只是預設的方式而已。繫結運算子=~用來告訴perl拿右邊的模式來匹配左邊的字串,而非匹配$_
my $some_other = "I dream of betty rubble.";
if ($some_other = ~ /rub/) {
print "Aye,there's the rub.
";
}
9, 模式內的內插
#!/usr/bin/perl -w
my $what = "larry";
while (<>) {
if (/^($what)/) { #將模式定位在字串的起點
print "Ww saw $what in beginning of: $_";
}
}
不管$what的內容是什麼,當我們進行模式匹配的時候,該模式都會成為$what的值。在本例中,它和/^(larry)/是相同的意思,也就是在每一行的開頭尋找larry.
10, 匹配變數
到目前為止,每當我們在模式裡飾演圓括號的時候,都只是用來表示不同的模式組。但圓括號同時也啟用了正規表示式處理引擎的記憶功能。記憶功能是指,把圓括號裡的模式所時間匹配到的部分字串暫時記下來的能力。如果有一對以上的圓括號,就會有一份以上的記憶。每一份記憶所儲存的是原本的字串,而不是模式。
因為匹配變數所儲存的都是字串,所以他們都是標量變數。在perl裡,他們的命名方式像$1,$2。模式裡的括號有多少對,匹配的便利多久又多少個。
$_ = "Hello there,neighbor";
if (/s(w+)./) { #記憶空白與逗號間的單詞
print "the word was $1
";
}
一次記憶多個
$_ = "Hello there,neighbor";
if (/(s+) (s+),(s+)/) {
print "words ware $1 $2 $3
";
}
11, 自動匹配變數
字串裡實際匹配模式的部分會被自動存進$&
相符段落的前置字串會存到$`
後置字串則存到$'
12, 通用量詞
模式/a{5,15}/可匹配重複5到15次的字母a
13,優先順序
1,()
2, * + ? {5,15} {3,} {5}
3, ^ $ B
4, |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245693/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 7,正規表示式(perl筆記)筆記
- PERL學習筆記---正規表示式筆記
- PERL學習筆記---正規表示式的應用筆記
- 正規表示式(筆記)筆記
- 正規表示式匹配原理
- [譯]正規表示式匹配
- 字串——正規表示式匹配字串
- iOS正規表示式匹配iOS
- 正規表示式速查筆記筆記
- 正規表示式筆記(四)筆記
- 正規表示式筆記(三)筆記
- 正規表示式筆記(二)筆記
- 正規表示式筆記(一)筆記
- 匹配換行的正規表示式程式碼
- 正規表示式支配匹配模式模式
- JavaScript匹配中文正規表示式JavaScript
- 模式匹配與正規表示式模式
- Swift 正規表示式匹配NSRegularExpressionSwiftExpress
- python 正規表示式匹配Python
- 匹配十六進位制顏色正規表示式
- 正規表示式學習筆記筆記
- JS筆記(15): 正規表示式JS筆記
- Linux中使用正規表示式進行文字匹配Linux
- 匹配十六進位制顏色值正規表示式
- 匹配html標籤正規表示式HTML
- 匹配空白字元正規表示式字元
- 匹配 XML 檔案正規表示式XML
- 匹配 HTML 標籤正規表示式HTML
- leetcode - 正規表示式匹配LeetCode
- 匹配空行正規表示式程式碼
- 常用正規表示式匹配模式(java)模式Java
- JavaScript匹配註釋正規表示式JavaScript
- [JavaScript] 正規表示式單次匹配與多次匹配JavaScript
- JavaScript正規表示式迷你書-筆記JavaScript筆記
- Ruby學習筆記-正規表示式筆記
- 正規表示式學習筆記一筆記
- python筆記(2) 正規表示式Python筆記
- 正規表示式學習筆記 (轉)筆記