各位大大好,小弟想请教一个关于\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',就可以明白其中差异。