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

如何用正则表达式按指定关键词分割字符串并保留分组内容?

正则表达式实现按指定关键词分割文本片段

这问题我之前处理类似需求时也碰到过!核心就是要精准匹配**从目标关键词开头,到下一个关键词起始(或文本结尾)的完整片段,用正则的正向预查(lookahead)**就能完美解决。

核心解决方案

直接用这个正则表达式就能实现你的需求:

(Foo:|Bar:|FooBar:)(.*?)(?=Foo:|Bar:|FooBar:|$)

正则各部分拆解

  • (Foo:|Bar:|FooBar:):匹配你指定的所有起始关键词,作为每个片段的开头
  • (.*?):非贪婪模式匹配任意字符,确保匹配到下一个触发条件就停止(避免贪婪模式直接吃到文本末尾)
  • (?=Foo:|Bar:|FooBar:|$):正向预查(零宽度断言),用来定义片段的结束边界——要么是下一个关键词的开头,要么是整个文本的末尾($)

测试效果

用你的测试字符串:

Foo: Some Text Bar: Some Other Text FooBar: Even More Text

匹配后会得到三个完整的片段:

  • Foo: Some Text
  • Bar: Some Other Text
  • FooBar: Even More Text

优化:去掉片段末尾的多余空格

如果不想保留片段末尾的 trailing 空格,可以调整正则,让它自动忽略关键词前的空格:

(Foo:|Bar:|FooBar:)(.*?)(?=\s*(?:Foo:|Bar:|FooBar:)|$)

这里的\s*(?:...)会匹配零个或多个空格加上下一个关键词,确保片段内容不会包含这些多余空格。

注意事项

  • 一定要用非贪婪模式的.*?,如果换成贪婪的.*,正则会直接匹配到文本最后,只能得到一个结果
  • 正向预查是零宽度的,不会消耗关键词字符,所以下一个关键词依然能被下一次匹配捕获

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:48:01