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

Python使用re.search()提取两关键词间内容时如何取首关键词第二次出现

解决方法

有两种常用的正则写法可以实现需求,适配不同的使用场景:

方法1:匹配最后一次出现的Hello作为起点

如果Hello一共只会出现2次,用贪婪匹配的特性即可直接定位到第二次(最后一次)Hello的位置:

import re
example_string = 'Hello A Bye, Hello B Ciao.'
# 贪婪模式的.*会尽可能匹配最长内容,自动跳过第一次出现的Hello
res = re.search(r'.*Hello(.*?)Ciao', example_string)
if res:
    # 去除前后空格后得到结果B
    print(res.group(1).strip())

方法2:灵活指定第N次出现的Hello作为起点

如果需要适配第任意次关键词作为起点的场景,可以用非捕获分组限定匹配次数,以下示例指定以第2次出现的Hello为起点:

import re
example_string = 'Hello A Bye, Hello B Ciao.'
# 把{2}改为对应数字即可指定匹配第N次出现的Hello
res = re.search(r'(?:.*?Hello){2}(.*?)Ciao', example_string)
if res:
    print(res.group(1).strip())

原理解释

你最初的写法会从第一个命中的Hello就开始匹配,非贪婪模式下会一直匹配到首次出现的Ciao为止,所以结果会包含两次Hello之间的冗余内容。上述两种方案都是先主动匹配掉前N-1次的Hello,再捕获后续到Ciao的内容,就能得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:03:02