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

如何编写正则表达式分组提取三类不同格式的字符串?

解决方案

可以使用支持可选分组的正则表达式适配这三种文本格式,核心是把后面的[内容]部分设为可选匹配项。

正则表达式(保留方括号的版本)

^(.*?)(?: (\[.*?\]))?(?: (\[.*?\]))?$

正则说明

  • ^ 和 $:锁定整行的开头和结尾,避免匹配片段内容
  • (.*?):捕获标题部分,非贪婪匹配到第一个空格加[或行尾
  • (?: (\[.*?\]))?:非捕获组包裹的可选模块,匹配空格+带方括号的内容,模块后加?表示可出现0次或1次,内部的(\[.*?\])会捕获带方括号的完整内容
  • 第二个(?: (\[.*?\]))?:同上,匹配第二个可选的带方括号内容

匹配结果

对三段文本分别匹配后,分组对应关系如下:

  1. 第一段文本:
    • 分组1:Simple test 1
    • 分组2:[https://www.test.com/aaa/bbb#rrr]
    • 分组3:[1.111111, 0.222222]
  2. 第二段文本:
    • 分组1:Simple test 2
    • 分组2:[https://www.test.com/aaa/bbb#rrr]
    • 分组3:空(无匹配内容)
  3. 第三段文本:
    • 分组1:Simple test 3
    • 分组2、3:空

如果不需要保留方括号,可将正则调整为:

^(.*?)(?: \[(.*?)\])?(?: \[(.*?)\])?$

此时分组2会捕获链接本身,分组3捕获坐标本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:54:31