java - 匹配逗号分隔列表中的组,忽略括号中的逗号

标签 java regex coldfusion

我正在使用以下字符串:

required,something_here[arg1,arg2],hey_yo[abc=123], is_date,date_after[date1,date2]

我的目标是匹配以逗号分隔的组,但忽略括号内的逗号。最终结果将是:

required
something_here[arg1,arg2]
hey_yo[abc=123]
is_date
date_after[date1,date2]

到目前为止,我已经能够正确匹配逗号了。然而,这与我实际需要的相反。我一直使用的正则表达式是:

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

关于如何重写它以获得当前结果的倒数有什么建议吗?

http://regexr.com/39tb0

最佳答案

好吧,给你:

(?:[^\]\[,]+|\[[^\]\[]+\])+

这是一个regex demo 。您可以通过模式匹配找到:

Pattern pattern = Pattern.compile("(?:[^\\]\\[,]+|\\[[^\\]\\[]+]\])+");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
    System.out.println(matcher.group());

这匹配所有不包含逗号或方括号的序列。当我们遇到方括号时,该组交替到右侧,匹配方括号之间的所有内容,然后返回左侧以匹配下一个逗号之前的所有内容,冲洗并重复,有效地断言匹配而不会遇到取消资格的逗号。

这是一个jdoodle code demo .

关于java - 匹配逗号分隔列表中的组,忽略括号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26917111/

相关文章:

coldfusion - 如何在 CreateObject 参数中添加带点的路径

jQuery 填充第二个选择列表

java - 如何从谓词引用获取注释值?

java - 从 eclipse 远程调试

coldfusion - 您可以为远程 CFC 函数中的参数设置默认值吗?

python - 在 pandas 数据框列中查找特定文本

regex - 在 Rust 中保存/加载编译的正则表达式?

java - 如何使用 Java 中另一个对象的属性对对象列表进行排序?

java - 在 Android 中实现计时器

regex - 仅在字符串开头或空格后匹配