我有一个类似于以下内容的字符串:
12,44,foo,bar,(23,45,200),6
我想创建一个匹配逗号的正则表达式,但仅匹配不在括号内的逗号(在上面的示例中,除了 23 和 45 之后的两个逗号之外的所有逗号)。我该如何做到这一点(Java 正则表达式,如果这有影响的话)?
最佳答案
假设不能有嵌套括号(否则,您不能使用 Java Regex 来执行此任务,因为不支持递归匹配):
Pattern regex = Pattern.compile(
", # Match a comma\n" +
"(?! # only if it's not followed by...\n" +
" [^(]* # any number of characters except opening parens\n" +
" \\) # followed by a closing parens\n" +
") # End of lookahead",
Pattern.COMMENTS);
此正则表达式使用 negative lookahead assertion确保接下来的括号(如果有)不是右括号。只有这样逗号才允许匹配。
关于java - 正则表达式只匹配逗号而不是括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410707/