2013-08-18 55 views

回答

3

\b單詞邊界匹配。所以正則表達式匹配「Aa」而不是「AaB」,因爲第二個字符串中的「a」和「B」之間沒有字邊界;也就是說,它們是同一個詞的一部分。

請參閱zero-width assertions上的perl文檔。

第二個匹配一個字符串,其中包含兩個相同的字符在任何地方。它的工作原理是\1匹配任何匹配的字符(.),匹配任何單個字符(即.)並將其記爲\1(即( ... ))。 .*意味着它們之間可以有任何東西(「零個或多個字符」)。

所以「abra」匹配(\1爲「a」),與「加法器」(\1爲「d」,而.*匹配零個字符)一樣,但不是「黑色」。

+0

正則表達式匹配'AAB',因爲'[a-z] *' – Toto

+0

謝謝,@ M42。固定。 –

3

正則表達式/\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':,因爲它是第一個位置上最長的這樣的字符串。