【发布时间】:2026-02-06 06:05:01
【问题描述】:
我有如下文字-
my_text = "My telephone number is 408-555-1234"
我在上面搜索模式
re.findall(r'\d{3}-\d{1,}',my_text)
我的意图是搜索三位数字值,然后是 -,然后是另一组一个或多个数字值。因此我期望结果是 - ['408-555','555-1234'],
但是我得到的结果只有 ['408-555'] 。
谁能建议我在这里的理解有什么问题。并提出一个符合我目的的模式
【问题讨论】:
-
我想这是因为你已经匹配了 555 你不能再匹配了。
-
您可以使用正向前瞻
print(re.findall(r'(?=(\d{3}-\d{1,}))',my_text))来使用重叠匹配 -
要查找重叠匹配,请参阅Python regex find all overlapping matches?。
-
@das-g - 是的,这有帮助。我没有意识到这一点,它真的很有帮助。谢谢