首页 > 解决方案 > 正则表达式在不在括号内的点上拆分字符串

问题描述

正如标题所说,我想写一个正则表达式 r Splitter.onPattern(r).splitToList("a.b.c.d[e.f.g]");使得

[a, b, c, d[e.f.g]]

我一直在玩试图让它正确,但无法弄清楚。我认为"\\.((?!\\[)*)\\]*"应该可以工作(匹配后跟不包含以']'结尾的'['的字符串的任何点),但由于某种原因它仍然在所有点上分裂。

标签: javaregex

解决方案


使用您显示的示例,请尝试以下操作,同时假设[]是平衡的而不是嵌套的。

\.(?![^[]*])

这是正则表达式的在线演示

说明:匹配一个点,后面不跟 0 个或多个不带 [ 且后面跟 ] 的字符。


推荐阅读