【问题标题】:Numeric pattern search in regular expression using Python [duplicate]使用Python的正则表达式中的数字模式搜索[重复]
【发布时间】: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 - 是的,这有帮助。我没有意识到这一点,它真的很有帮助。谢谢

标签: python regex


【解决方案1】:

你可以使用:

re.findall(r'(?=(\d{3}-\d+))', my_text)

输出:

['408-555', '555-1234']

【讨论】: