java - 如何拆分包含lookbehind和lookahead的正则表达式的字符串

标签 java regex

我想分割以下字符串:

"VALUE:VALUE,VALUE:[VALUE1,VALUE2,VALUE3],VALUE:VALUE"

进入

"VALUE:VALUE"
"VALUE:[VALUE1,VALUE2,VALUE3]"
"VALUE:VALUE"

我预计:

String[] elements = text.split("(?<!\\[),|,(?!\\])");

让我明白,因为我认为这意味着如果它之前或之后有括号,它就不会匹配逗号,但会返回:

"VALUE:VALUE"
"VALUE:[VALUE1"
"VALUE2"
"VALUE3]"
"VALUE:VALUE"

有什么想法可以做到这一点吗?

最佳答案

如果您没有任何嵌套的可能性,请尝试此正则表达式:

String[] elements = text.split(",(?![^\\[]*\\])");

这与后面没有 ] 且前面没有任何 [ 的逗号匹配。

ideone demo

关于java - 如何拆分包含lookbehind和lookahead的正则表达式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22324498/

相关文章:

java - 正则表达式插入符号和符号有效,但不知道为什么

r - 如何提取子字符串作为 dplyr::mutate 管道的一部分

java - 使用 AND/OR 组合的 Elasticsearch Java 查询

java - 创建新的 Map.Entry - 似乎比需要的更难

java - Java 和 JS 中的 RegEx 行为不同?

regex - 将部分网址与正则表达式匹配

java - 如何在java中匹配紧邻的前一个单词模式?

java - Mybatis 3.4.6 - 数据未插入 HSQLDB

java - 按字典顺序对点数组进行排序

java - 如何播放包中的 mp3 文件?