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

如何合并正则表达式提取带/不带引号的目标值并保留分组?

合并正则表达式提取带/不带引号的值

可以使用分支重置组((?|...))将三个正则合并为一个,保证原有的分组结构(第1组匹配foo,第2组匹配目标值),同时自动剥离引号:

^(foo):\s*(?|"([^"]*)"|'([^']*)'|(.*))

正则说明:

  • ^(foo):匹配行首的foo并捕获到第1组,和你原有的逻辑一致
  • :\s*:匹配冒号及任意数量的空白字符(兼容多个空格/制表符的情况)
  • (?|...):分支重置组,内部每个分支的捕获组编号会统一重置,确保第2组始终是我们要提取的目标值
    • "([^"]*)":匹配双引号包裹的内容,捕获引号内的文本到第2组
    • '([^']*)':匹配单引号包裹的内容,捕获引号内的文本到第2组
    • (.*):匹配无引号的情况,捕获冒号后所有剩余文本到第2组

匹配示例:

  • 输入foo: "bar" → 第1组:foo,第2组:bar
  • 输入foo: 'bar' → 第1组:foo,第2组:bar
  • 输入foo: bar → 第1组:foo,第2组:bar
  • 输入foo: bar baz → 第1组:foo,第2组:bar baz(兼容无引号值含空格的场景)

注意事项:

如果无引号的目标值中包含单/双引号,这个正则会提前终止匹配。如果需要支持这种边缘场景,可以进一步调整正则逻辑,但基于你给出的示例场景,上述正则已经足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:15:13