【发布时间】:2022-01-25 05:10:38
【问题描述】:
在匹配电子邮件地址时,在匹配yasar@webmail 之类的内容后,我想捕获一个或多个(\.\w+)(我所做的有点复杂,这只是一个示例),我试过了添加 (.\w+)+ ,但它只捕获最后一场比赛。例如,yasar@webmail.something.edu.tr 匹配但仅在yasar@webmail 部分之后包含.tr,因此我丢失了.something 和.edu 组。我可以在 Python 正则表达式中执行此操作,还是建议您先匹配所有内容,然后再拆分子模式?
【问题讨论】:
-
在Python Issue 7132 中提出了捕获重复表达式,但被拒绝。但是第三方regex 模块支持它。
-
@ToddOwen 但是,这在 2.7 中不是可能吗?我不知道什么时候成为可能。但是,stackoverflow.com/a/9765037/3541976 的答案似乎对我来说在 2.7 中使用 re 模块工作得很好。
-
@MichaelOhlrogge 第 7132 期是关于如果捕获括号在 inside 重复时会发生什么。该问题尚未解决,并且仍将仅保留最后一场比赛。如您链接到的答案中所述,一种可能的解决方法是将捕获括号围绕放置一个重复模式。 (请注意,
(?: ...)没有捕获括号)。 -
@ToddOwen 明白了,谢谢,这是一个有用的说明!