$ string =「Aa Aa 122」;perl中字邊界的功能是什麼
/\b[A-Z][a-z]*\b/
\ b \ b =>是否搜索Aa Aa的重複或者搜索不在[]中?
,什麼的跟隨着正則表達式做,
/(.).*\1/
$ string =「Aa Aa 122」;perl中字邊界的功能是什麼
/\b[A-Z][a-z]*\b/
\ b \ b =>是否搜索Aa Aa的重複或者搜索不在[]中?
,什麼的跟隨着正則表達式做,
/(.).*\1/
的\b
單詞邊界匹配。所以正則表達式匹配「Aa」而不是「AaB」,因爲第二個字符串中的「a」和「B」之間沒有字邊界;也就是說,它們是同一個詞的一部分。
請參閱zero-width assertions上的perl文檔。
第二個匹配一個字符串,其中包含兩個相同的字符在任何地方。它的工作原理是\1
匹配任何匹配的字符(.)
,匹配任何單個字符(即.
)並將其記爲\1
(即(
... )
)。 .*
意味着它們之間可以有任何東西(「零個或多個字符」)。
所以「abra」匹配(\1
爲「a」),與「加法器」(\1
爲「d」,而.*
匹配零個字符)一樣,但不是「黑色」。
正則表達式/\b[A-Z][a-z]*\b/
搜索僅包含ASCII字母字符的大寫字母。實例:
Foo B Ba Bar
但不
bAr FOO foo BAR Føø BäÞ b
的\b
是零寬度斷言僅在字邊界,其中一個「字字符」 \w
和非文字字符相鄰匹配。它相當於該查找變通
(?<!\w)(?=\w)|(?<=\w)(?!\w)
的\1
是backref到捕獲的基團,並且該組的文字內容相匹配。此正則表達式允許我們將字符串foo
通過雙人牀或單引號引用匹配:
/(["'])foo\1/ # "foo" and 'foo' but not "foo' or 'foo"
它匹配雙人牀或單引號和記住哪些。在foo之後,該角色必須再次出現。你的正則表達式是一個更一般的形式,foo
可以是任何東西,並且引用字符可以是任何東西。這找到了由一個字符包圍的第一個最長的非換行符串,例如in
:"':foo':"
這匹配:"':foo':
,因爲它是第一個位置上最長的這樣的字符串。
正則表達式匹配'AAB',因爲'[a-z] *' – Toto
謝謝,@ M42。固定。 –