我想为一对连续的单词获得2个被捕获的组。我使用这个正则表达式:
r'\b(hello)\b(world)\b'
但是,使用此正则表达式搜索“hello world”不会产生任何结果:
regex = re.compile(r'\b(hello)\b(world)\b')
m = regex.match('hello world') # m evaluates to None.
答案 0 :(得分:3)
您需要在单词之间留出空格:
>>> import re
>>> regex = re.compile(r'\b(hello)\s*\b(world)\b')
>>> regex.match('hello world')
<_sre.SRE_Match object at 0x7f6fcc249140>
>>>
正则表达式\b(hello)\b(world)\b
要求单词hello
正好在单词world
开始的位置结束,但在它们之间使用单词分隔\b
。这不可能发生。在它们之间添加\s
空间可以解决这个问题。
如果您打算在hello
和world
之间允许使用标点符号或其他分隔符,那么应该将这种可能性添加到正则表达式中。