You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用re.findall提取字符串中的目标重复匹配组?

解决方法

你的问题出在正则的匹配范围没有明确限定,导致非贪婪匹配提前终止。可以通过正向预查来指定每个匹配项的结束边界,修正后的正则如下:

import re

text = 'change of use of fidg to idvr change of use ohdgt to ousd'
result = re.findall(r'(change of use .*?) (to .*?)(?= change of use|$)', text)
print(result)

输出结果:

[('change of use of fidg', 'to idvr'), ('change of use ohdgt', 'to ousd')]

正则说明

  • (change of use .*?):匹配以"change of use"开头的内容,非贪婪模式确保不会过度匹配到下一个条目。
  • (to .*?):匹配以"to"开头的目标内容,同样用非贪婪模式避免越界。
  • (?= change of use|$):正向预查,指定匹配的结束边界——要么遇到下一个"change of use",要么到字符串末尾,确保两个独立条目被正确分割。

原正则的问题

你之前的'(change of use .*?) (to .*?)'没有限定to .*?的结束位置,非贪婪匹配会在遇到第一个空格时停止,导致第二个组只匹配到'to'而非完整的'to idvr',同时无法区分两个独立的条目。

内容的提问来源于stack exchange,提问作者Alice Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:09:23