PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] 關於regular expression的\b問題
作者:
jamesxxx1997
(黃~)
2017-10-11 09:18:31
各位大大好,小弟想請教一個關於\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']
想要請教一下,為甚麼呢,謝謝~~~
作者:
djshen
(djshen)
2017-10-11 09:31:00
說說看你對\b的了解
作者:
vi000246
(Vi)
2017-10-11 10:09:00
這段regex想匹配什麼單字?
作者:
ptt0720
(濕濕)
2017-10-11 11:13:00
b是邊界 , 不管有沒有邊界你都findall了 就會全部匹配
作者:
jamesxxx1997
(黃~)
2017-10-11 13:10:00
我對於\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',就可以明白其中差異。
作者:
s860134
(s860134)
2017-10-11 22:57:00
\b 是字元與非字元的邊界,少掉這個你的集合更大了你把例子的 AV 換成 MV, 這樣結果還是一樣嗎?上面例子不對應該是 AV -> AVV 這樣就不一樣了
作者:
jamesxxx1997
(黃~)
2017-10-12 19:10:00
好的,謝謝s大解答~
作者:
art1
(人,原來不是人)
2017-10-13 00:08:00
(?=\b[^aeiouAEIOU])\w+ 試出這樣可以選出來
繼續閱讀
Re: [問題] leetcode sliding window median
edwar
Re: [問題] leetcode sliding window median
pokkys
Re: [問題] leetcode sliding window median
pokkys
Re: [問題] 爬蟲RequestURL的取得
unhumanWu
[問題] leetcode sliding window median
sean72
[資訊] SQL Server 2017 AI 之 Python / R 實作
rockchangnew
[問題] Jupyter notebook大寫問題
KKTcondition
[問題] 關於在Windows環境下執行python程式
threeSecGun
[問題] 爬蟲RequestURL的取得
unhumanWu
[問題] pandas存取excel
nc23nick
Links
booklink
Contact Us: admin [ a t ] ucptt.com