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

2021-06-06 09:50:42 字數 2771 閱讀 7702

$- | $+ | @+ | @-

與模式相關的變數在整個發生模式匹配的動態範圍內都可見,換句話說,他們就像是local宣告的一樣,不用自己定義就能使用。

@+   à     @last_match_end

@-    à     @last_match_start

$+     à     $last_paren_match

$^r  à     $last_regexp_code_result

$&    à     $match

$'      à     $postmatch

$`      à     $prematch

example:

my $str = "*****bange&&&&&mantou!!!!!chifan*****";

$str =~ /(bange)\s+(mantou)\s+(chifan)/;

print "$-[0]\t$-[1]\t$-[2]\t$-[3]\t$-[-1]\n";       ###  5       5       15      26      26

print "$+[0]\t$+[1]\t$+[2]\t$+[3]\t$+[-1]\n";  ###  32      10      21      32      32

print "$+\n@-\n@+\n";

###

chifan

5 5 15 26

32 10 21 32

注:

>>一般匹配的情況下(沒有圓括號),所有的$-[n],(n!=0/-1)的情況都是沒有意義。\

這時:$-[0]  匹配到的字串的第乙個字元的位置(所有的位置從0開始,下同)

$+[0]  匹配到的字串的最後乙個字元的後乙個字元的位置。

位置:可以理解為偏移量。

>>特殊情況下(有乙個或者多個圓括號),所有的$±[n],(n<=圓括號的個數)都是有意義,但是$-[0]和$+[0]都是多餘的,因為$-[0]==$-[1],$+[0]=$+[n],(n=圓括號的個數)。

>>其他變數的含義(含有圓括號的情況下存在)

$-[1/2/3]  匹配到的第

1/2/3個括號中內容的第乙個字元的位置。

$+[1/2/3]  匹配到的第1/2/3個括號中內容的最後乙個字元的下乙個字元的位置。

@-/@+:分別是$-[n]/$+[n]的陣列,以陣列的形式儲存位置。

$+:   最後乙個圓括號中匹配上的字串。

特別注意:$-並不是正規表示式的匹配變數,它存在於檔案控制代碼中,意義是

$- --> $format_lines_left

>>例外變數

$^r,$*和$digits曾也是正規表示式的變數,但是現在不再使用或者本人測試時沒有意義。當然我也不準備用那麼多,以上的足夠了,呵呵

>>摘抄

@-

最近一次正規表示式匹配的部分在目標字串中的起始偏移量

@+

最近一次正規表示式匹配的部分在目標字串中的終止偏移量

$&

最近一次正規表示式匹配到的部分

$`

在目標字串中最近一次正規表示式匹配到的部分之前的內容

$'

在目標字串中最近一次正規表示式匹配到的部分之後的內容

·$`

is the same as

substr

($var,

0,$-[0

])

·$&

is the same as

substr

($var,$-[

0],$+

[0] - $-[

0])

·$'

is the same as

substr

($var,$+[

0])

·$1

is the same as

substr

($var,$-[

1],$+

[1] - $-[

1])

·$2

is the same as

substr

($var,$-[

2],$+

[2] - $-[

2])

·$3

is the same as

substr

($var,$-[

3],$+

[3] - $-[

3])

摘抄是部落格烏托邦的內容,具體**請移步到

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

1 2 n 每一次成功的匹配了乙個模式 包括替換 操作符都會把變數 分別設定為匹配內容左邊的內容,匹配的內容和匹配右邊的文字,這個功能對字串分解為元件很有用。為了有更好的顆粒度和提高效率,你可以用圓括弧捕捉你特別想分離出來的部分。每對圓括弧捕捉與圓括弧內的模式相匹配的子模式。圓括弧由左圓括弧的位置從...

正規表示式中的特殊匹配

貪婪匹配和惰性匹配 預設的貪婪匹配是從後往前匹配,最大長度的匹配,惰性匹配就是在量詞後面加個?從字串的前面開始匹配,最小長度的匹配 舉例 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 ...