我正在跟进一个教程,我似乎陷入了一件似乎很容易做的事情:
numRegex = re.compile(r'\d+(\s+\w+)?')
spam = numRegex.findall("my address is 999 Street Ave City CA 95014 x")
print(len(spam))
print(spam)
这会返回[' Street', ' x']
,这显然是错误的,因为它应该是['999 Street', '95014 x']
。
答案 0 :(得分:0)
您正在错误地捕获该群组。尝试:
numRegex = re.compile(r'(\d+(?:\s+\w+)?)')
或者,
numRegex = re.compile(r'\d+(?:\s+\w+)?')
\d+(\s+\w+)?
寻找整个模式,但仅匹配(\s+\w+)
部分,因为这是捕获组。
您需要匹配整个模式。因此,您应该在整个模式上添加一个括号,以匹配作为捕获组的整个模式。
现在,您有一个嵌套捕获组(\s+\w+)?
。您需要将其设为非捕获组。因此,在括号内添加?:
以获得效果。