正規表示式 模式匹配 特殊變數 1

2021-06-06 09:48:32 字數 957 閱讀 8256

$` | $& | $』 | $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 ...