我想重复一遍,让自然数出现,并抓住所有的自然数。你知道吗
import re
r = "the ((sixty|six)[ -]+)+items"
s = "the sixty six items"
re.findall(r, s)
# [('six ', 'six')]
它与'six'匹配了2次,但是可以观察到,它不可能在'six-six'上匹配;相反,它必须在'six-six'上匹配,但是捕获返回('six','six')。你知道吗
这里发生了什么,我怎么才能回来(‘六十’、‘六’)?你知道吗
Tags:
如果使用
(group)+
,则组中只捕获最后匹配的文本。你知道吗您应该将
findall
与稍微不同的regex一起使用。你知道吗您的问题有以下代码:
它返回
[('six ', 'six')]
,因为在你的组后面使用了量词,即((sixty|six)[ -]+)+
findall
返回两个captured group #1
是"six "
(注意这里的空格是由于第一个组中的[ -]+
)captured group #2
是"six"
(内部组,即(sixty|six)
)使用
\b
断言:希望这有帮助。你知道吗\b
断言将避免错误命中,例如:如果您添加了十六个并且不希望匹配没有
\b
有
\b
(优势)re.search
只找到与模式匹配的第一个对象,一旦找到匹配的对象,它就不会再寻找其他匹配的对象。因为一个捕获组嵌套在另一个捕获组中,('six ', 'six')
与外部组匹配,'six '
与内部组匹配(没有尾随空格)。你知道吗您可以在一些非捕获组中使用两个未嵌套的捕获组(使用
(?:...)
语法)来执行所需的操作。你知道吗输出
这将返回一个包含两个项的元组,因为模式中有两个捕获组。你知道吗
这是一个较长的演示。你知道吗
输出
相关问题 更多 >
编程相关推荐