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

如何拆分字符串以提取被方括号完整包裹的子串?

解决方案

要获取包含方括号的完整子串,有两种简单的修改方式:

方式一:直接使用整个匹配结果(无需修改正则)

正则匹配中,matcher.group(0)会返回整个正则表达式匹配到的完整内容,而group(1)仅返回第一个捕获组(括号内的部分)的内容。只需修改代码中添加元素的行即可:

val matches: MutableList<String> = mutableListOf()
val str = "[abc][def]"
val matcher = Pattern.compile("\\[([^]]+)]?").matcher(str)
while(matcher.find()) {
    matches.add(matcher.group(0)); // 改用group(0)获取完整匹配串
}
println(matches) // 输出: [abc, def]

方式二:优化正则表达式(更严谨)

原正则末尾的]?是可选匹配,可能导致匹配不完整的情况,建议去掉并调整为更精准的正则,同时如果不需要捕获括号内的内容,可以去掉捕获组:

val matches: MutableList<String> = mutableListOf()
val str = "[abc][def]"
val matcher = Pattern.compile("\\[[^]]+]").matcher(str) // 去掉捕获组和可选的]
while(matcher.find()) {
    matches.add(matcher.group(0));
}
println(matches) // 输出: [abc, def]

正则说明

\[[^]]+]的含义:

  • \[:匹配左方括号[(需转义)
  • [^]]+:匹配一个或多个非右方括号的字符
  • ]:匹配右方括号]

这样正则会精准匹配每一个完整的[xxx]格式子串,避免不必要的可选匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:27:35