如何以下量詞不同 - 相對於情景,速度等懶惰,貪婪和佔有量詞有什麼區別?
?
,??
和?+
所有匹配0或1次。*
,*? and
* +`全部匹配0次或更多次。+
,+?
和++
所有匹配1次或更多次。
?
,*
和+
是貪婪。??
,*?
和+?
是勉強/懶惰。?+
,*+
和++
是佔有慾。
任何人都可以幫助我理解這些術語的含義嗎?爲什麼每個量詞在同一個工作中有三個變體?
如何以下量詞不同 - 相對於情景,速度等懶惰,貪婪和佔有量詞有什麼區別?
?
,??
和?+
所有匹配0或1次。*
,*? and
* +`全部匹配0次或更多次。+
,+?
和++
所有匹配1次或更多次。?
,*
和+
是貪婪。??
,*?
和+?
是勉強/懶惰。?+
,*+
和++
是佔有慾。任何人都可以幫助我理解這些術語的含義嗎?爲什麼每個量詞在同一個工作中有三個變體?
採取串
aaaab
,並請參閱下面的正則表達式如何匹配它:
Regex Submatches
group 1 group 2 group3
(a?)(a*)(ab) a aa ab
(a??)(a*)(ab) aaa ab
(a?+)(a*)(ab) a aa ab
(a*)(a?)(ab) aaa ab
(a*?)(a?)(ab) aaa ab
(a*+)(a?)(ab) aaaa <Match fails!>
(a+)(a*)(ab) aaa ab
(a+?)(a*)(ab) a aa ab
(a++)(a*)(ab) aaaa <Match fails!>
說明:
a?
嘗試匹配一個a
,但它的準備如果這是必要的,則不匹配整場比賽取得成功。a??
試圖找不到任何東西,但它準備匹配一個a
,如果這對整個比賽成功是必要的。a?+
試圖匹配一個a
。如果可以的話,那麼而不是可以退回來,如果這對於整體比賽的成功是必要的。如果它不能匹配a
,那麼它很樂意與任何東西都不匹配。a*
試圖儘可能多地匹配a
s,但它準備匹配較少的a
s,即使沒有,如果這對於整個比賽成功是必要的。a
s,以便整個比賽成功,但不是更多。a*+
儘可能地匹配儘可能多的a
s。如果能夠做到這一點,那麼它將而不是回落,以匹配較少的a
s,如果這對整體比賽是成功的必要條件。如果它甚至不能匹配一個單獨的a
,那麼它將很樂意與任何東西匹配。a+
儘可能匹配儘可能多的a
s,但是如果整個比賽成功,則準備匹配較少的a
s(但至少一個)。a+?
試圖匹配只有一個a
,但它準備匹配儘可能多的a
s爲了整個比賽成功,但不是更多。a++
儘可能匹配儘可能多的a
s。如果能夠做到這一點,那麼它將而不是回落,以匹配較少的a
s,如果這對整體比賽是成功的必要條件。如果它甚至不能匹配一個a
,那麼正則表達式失敗。
爲什麼?因爲有人在某個地方使用它們?您真的需要花時間閱讀正則表達式文檔,並嘗試使用IRB或rubular.com,查看它們的工作方式,並記住您將來學到的東西。很多學習編程的實驗都是爲了觀察小變化的影響,而不是要求人們解釋這些事情。 –
http://www.regular-expressions.info/possessive.html – Phrogz
@TimPietzcker感謝你投我一票。這對我來說並不重要,但是投票會導致鎖定「新帖子」 - 這是致命的,我認爲。我與這樣的選票最少有交集,但是你太喜歡那些有這樣一個敏銳概念的人,有這樣的概念。但是,一些「SO」用戶在幾天後我看到更多的人對「反對」投票感興趣,而不知道問題的重要性。如果你不明白我的'Post',那就好了。但是當答案已經發布並且答案太多的時候,爲什麼不回來投票誰投票。 – DoLoveSky