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

正则表达式如何匹配由\s;\s分隔的动态数量未知的全部分组

正则匹配多分组规则编写方案

你之前的写法存在两个核心问题:

  1. 否定前瞻语法错误,正确的否定前瞻语法为(?!pattern),你将感叹号误写在捕获组内部
  2. 锚定了行首符号^,只能匹配行首位置的内容,自然无法捕获全部分组

无嵌套括号场景最优方案

如果你的分组内容不存在嵌套括号,直接用以下正则匹配所有分组即可:

\([^)]+\)

规则解释:

  • \( 匹配分组开头的左括号
  • [^)]+ 匹配除右括号外的1个及以上任意字符,覆盖分组内所有内容
  • \) 匹配分组结尾的右括号

需基于\s;\s分隔符匹配的场景

如果分组内容存在特殊字符需要严格按照分隔符拆分,有两种实现方式:

  • 优先用编程语言的字符串拆分能力,直接以\s;\s为分隔符拆分整行,得到的结果就是全部分组,实现成本最低
  • 必须用正则匹配的场景,使用以下规则:
(?:^|;\s)\K[^;]+?(?=\s*(?:;|$))

规则解释:

  • (?:^|;\s) 非捕获组,匹配行首或者分隔符的; 前缀
  • \K 重置匹配起始位置,前面的内容不会计入最终匹配结果
  • [^;]+? 非贪婪匹配所有非分号字符,即分组内容
  • (?=\s*(?:;|$)) 正向预查,确认当前内容后面要么是分隔符,要么是行尾,避免匹配越界

测试用例输入:(group1) ; (group2 with space) ; (group3-special) ; (末尾分组)
匹配输出结果:

  • (group1)
  • (group2 with space)
  • (group3-special)
  • (末尾分组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:09:03