各位大大好,小弟想請教一個關於\b範例的問題
ex1.result=re.findall(r'\b[^aeiouAEIOU]\w+','AV is largest Analytics community of
India')
如果把\b給去掉,print(result)會得出一樣的結果
>>>print(result)
[' is', ' largest', ' Analytics', ' community', ' of', ' India']
想要請教一下,為甚麼呢,謝謝~~~
我對於\b的概念是,\b就是word boundary而且\b 是屬於zero width assertion,不會占用任何字元,而word boundary 就是不屬於alphanumericcharcter,而且不是空白鍵,也不是底線照ptt0720大大的概念,我應該是對finall不太清楚這段regex想要匹配非母音開頭的單字喔正確的解法是\b[^aeiouAEIOU ],多一個空白鍵後來想了一下,是因為findall是逐字掃描而[^aeiouAEIOU]\w+也是碰碰word boundary而停止的所以\b才會有加跟沒加結果都一樣?
作者: stucode 2017-10-11 22:41:00
並不是 \b 放在開頭就只會 match 到單字開頭的邊界,這兩個 re 並不等價,在這個句子只是碰巧產生相同結果。把句子換成 'Apples on the tree' 或是 'My arm',就可以明白其中差異。