$` | $& | $』 | $1 | $2 | $n
>>>每一次成功的匹配了乙個模式(包括替換),操作符都會把變數$`|$&|$』分別設定為匹配內容左邊的內容,匹配的內容和匹配右邊的文字,這個功能對字串分解為元件很有用。
>>>為了有更好的顆粒度和提高效率,你可以用圓括弧捕捉你特別想分離出來的部分。每對圓括弧捕捉與圓括弧內的模式相匹配的子模式。圓括弧由左圓括弧的位置從左到右依次排序;對應那些子模式的子字串在匹配之後可以通過順序的變數$1 ,$2,$3等等獲得。
example:
my $str = "*****bange&&&&&mantou%%%%%";
$str =~ /(bange)\s+(mantou)/;
print "$1$2\n"; ### bangemantou
print "<$`>$&<$'>\n"; ### <*****>bange&&&&&mantou<%%%%%>
print "$str\n"; ### *****bange&&&&&mantou%%%%%
注: >>模式匹配是指一次匹配操作,而不是指一次匹配上的內容,比如上面的,在兩個圓括弧中同時匹配上內容,但是他們僅僅屬於這一次匹配操作,還有中間的\s+,都是這一次匹配的結果。也就是說//中間的所有匹配上的內容是這一次匹配操作的結果,然後依此分配三個變數的內容。
>>$`, $& , $' 和排序的變數都是全域性變數,它們隱含地區域性化為屬於此閉合的動態範圍。它們的存在直到下一次成功的匹配或者當前範圍的結尾,以先到者為準。
>>一旦 perl 認為你的程式的任意部分需要 $` , $& , 或 $',它就會為每次模式匹配提供這些東西。這樣做會微微減慢你的程式的速度。perl 同樣還利用類似的機制生成 $1 ,$2 等等,因此你也會為每個包含捕捉圓括弧的模式付出一些代價。
正規表示式 模式匹配 特殊變數 2
與模式相關的變數在整個發生模式匹配的動態範圍內都可見,換句話說,他們就像是local宣告的一樣,不用自己定義就能使用。last match end last match start last paren match r last regexp code result match postmatch ...
正規表示式中的特殊匹配
貪婪匹配和惰性匹配 預設的貪婪匹配是從後往前匹配,最大長度的匹配,惰性匹配就是在量詞後面加個?從字串的前面開始匹配,最小長度的匹配 舉例 123abc d 匹配的是123,d 匹配的是1 可以用在正向斷言中,如x y x?y x 捕獲括號,匹配x並記住匹配 x 非捕獲括號,匹配x但不記住匹配,即後面...
特殊正規表示式
特殊需求表示式 2 網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 3 interneturl a za z s 或 http w w w 4 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 ...