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

正则表达式提取方括号内文本及括号外最后字符串的实现方法

正则表达式解决方案

问题分析

你需要匹配带嵌套方括号的[xxx]内容(包括空括号),同时提取括号外的末尾文本。原正则/\[(.*?)\]/g因非贪婪匹配特性,遇到第一个]就终止匹配,无法处理嵌套括号,也未覆盖末尾文本的提取逻辑。

具体实现

1. 匹配所有[xxx]中的内容(支持一层嵌套括号)

使用正则:

\[([^\[\]]*(?:\[[^\[\]]*\][^\[\]]*)*)\]
  • \[:匹配开头的左方括号
  • ([^\[\]]*(?:\[[^\[\]]*\][^\[\]]*)*):捕获组,负责匹配括号内的内容:
    • [^\[\]]*:匹配非括号的任意字符
    • (?:\[[^\[\]]*\][^\[\]]*)*:匹配一层嵌套的[xxx]结构,后续可跟随非括号字符,支持重复匹配(满足你的示例中[5[any]]的嵌套场景)
  • \]:匹配结尾的右方括号

开启全局匹配g,可依次捕获到1、2、3、空字符串、5[any]。

2. 提取末尾的非括号文本

使用正则:

\s*([^\[\]]+)$
  • \s*:匹配开头的任意空白字符
  • ([^\[\]]+):捕获所有非括号的文本内容
  • $:锚定字符串结尾位置,确保只匹配最后一段文本

3. 合并结果

将第一步捕获的所有内容,与第二步捕获的文本按换行拼接,即可得到你期望的输出。

示例验证

针对输入字符串:

[1] [2] [3] [] [5[any]] my text

第一步捕获内容依次为1、2、3、""、5[any];第二步捕获内容为my text,拼接后结果为:

1
2
3

5[any]
my text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:57:42