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

如何修改正则(?<=TG00).*?(?=#),提取含TG40 155963的字符串?

如何从TG00与#之间的匹配结果中筛选含TG40 155963的字符串?

嘿,我来帮你搞定这个问题!你已经用正则(?<=TG00).*?(?=#)提取了TG00和#之间的内容,现在要从中挑出包含TG40 155963的字符串,这里有两种实用的方法:

方法一:直接修改正则,一步到位匹配目标内容

你可以在原正则的基础上添加一个正向前瞻断言,确保TG00到#之间的内容里确实包含TG40 155963。最终的正则表达式是:

(?<=TG00)(?=.*?TG40 155963).*?(?=#)

正则各部分解释:

  • (?<=TG00):正向后顾断言,保证匹配位置的前面是TG00,和你原来的逻辑一致;
  • (?=.*?TG40 155963):正向前瞻断言,检查从当前位置到#之前的内容中是否存在TG40 155963(.*?是非贪婪匹配,避免不小心跨过下一个#);
  • .*?(?=#):匹配任意字符直到遇到#为止,确保只取TG00到#之间的完整内容。

这种方法适合直接在正则工具里一次性完成匹配和筛选,效率很高。

方法二:先提取所有结果,再在代码中二次筛选

如果是在代码场景下(比如Python、JavaScript等),你可以先提取所有TG00到#之间的内容,再通过简单的字符串判断筛选出目标结果。

以Python为例,代码示例如下:

import re

# 替换成你的原始文本
raw_text = "这里是你的原始文本,比如TG00abcTG40 155963def# 还有TG00xyz# 以及TG00fooTG40 155963bar#"

# 第一步:提取所有TG00到#之间的内容
all_matches = re.findall(r'(?<=TG00).*?(?=#)', raw_text)

# 第二步:筛选包含TG40 155963的结果
filtered_results = [match for match in all_matches if 'TG40 155963' in match]

print(filtered_results)
# 输出会是:['abcTG40 155963def', 'fooTG40 155963bar']

这种方法的优势是更灵活,如果你之后还要对匹配结果做其他处理,二次筛选的方式会更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:37:48