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