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

如何用Python正则提取指定模式之后的所有独立单词作为单独分组

问题原因

之前的正则无法达到预期的原因:

  • (?<=a )(\w+)的正向断言只会定位到a 后的首个位置,单次匹配仅捕获第一个出现的单词
  • (?<=a ).*为贪婪匹配,会直接匹配到行尾,因此只能得到一个整串结果

方案1:纯正则单步实现

使用\G锚点匹配上一次匹配结束的位置,实现连续捕获a 后的所有单词:
正则表达式为:(?:(?<=a )|\G(?!^))(\w+)
各部分含义:

  • (?<=a ):定位到紧跟a 之后的首个匹配起始位置
  • \G(?!^):匹配上一次匹配结束的位置,(?!^)排除字符串起始位置,避免匹配到a 之前的内容
  • 捕获组(\w+):提取每个独立单词

Python代码示例:

import re

text = "we have a Newliner Chatacter in 10000 the Middle of the sentence"
pattern = r'(?:(?<=a )|\G(?!^))(\w+)'
res = re.findall(pattern, text)

# 输出验证
for word in res:
    print(word)

方案2:拆分后匹配(更易维护,性能更优)

如果不需要严格用单条正则完成,可以先提取a 之后的子串,再对该子串做单词匹配,逻辑更简单直观:
Python代码示例:

import re

text = "we have a Newliner Chatacter in 10000 the Middle of the sentence"
# 按第一个出现的"a "拆分,取后半部分
after_part = text.split("a ", 1)[1]
res = re.findall(r'\w+', after_part)

# 输出验证
for word in res:
    print(word)

两种方案输出结果均和预期完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:03