python regex - 单词边界的奇怪行为

时间:2016-06-22 22:14:04

标签: python regex

如何使用这样的单词bounder来捕捉包含在方括号中的单词:\b<WORD-IN-ANGLE-BRACKETS>\b。似乎存在某种类型的错误,如果方括号触及单词边界则不匹配。

看看这个例子:

re.findall(r"\b(<\w+>)\b", "<A> B <C>")  # 1. output: []
re.findall(r"(<\w+>)", "<D> E <F>")      # 2. output: ['<D>', '<F>']
re.findall(r"\b(\w+)\b", "G H I")        # 3. output: ['G', 'H', 'I']
re.findall(r"\b(z<\w+>z)\b", "z<D>z z<E>z z<F>z") #4. output: ['z<D>z', 'z<E>z', 'z<F>z']

正如你在#4中看到的那样,如果我在方括号和边界之间放置一些东西,那么它就会起作用,所以这只会在它们触碰时发生。

这里发生了什么?为什么不#1工作但#4有效?我怎样才能让#1工作?

0 个答案:

没有答案