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

如何用正则表达式(regex)提取指定词组前后各两个单词,现有代码错在哪?

错误原因

  • 没有匹配单词之间的空白字符:你的正则表达式里前后的(\w+){2}和目标词组之间没有加空白匹配规则,单词之间的空格完全没有被匹配,整个正则自然找不到对应内容。
  • 分组捕获逻辑错误:(\w+){2}的写法会让分组每次匹配都覆盖上一次的结果,最终只能拿到紧邻目标词组的1个单词,拿不到前面/后面的第二个单词。
  • 你预期的后置内容I bought存在拼写错误,原句目标词组后第一个单词是小写的i,实际可提取到的是i bought。

修正后的代码

import re

sentence = "I love the grand mother bag i bought . I love my sister's ring "
# (?:\w+\s+){2} 表示非捕获组匹配两次「单词+空白」,外层分组捕获整段前置内容
# 后置同理匹配两次「空白+单词」
regex = re.search(r'((?:\w+\s+){2})the grand mother bag((?:\s+\w+){2})', sentence)
if regex:
    # 去掉前后多余空白得到结果
    pre_content = regex.group(1).strip()
    post_content = regex.group(2).strip()
    print(pre_content, post_content)

运行后输出:I love i bought

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:24:03