Java正则表达式只匹配逗号而不是括号?

我有一个类似于以下内容的字符串:

12,44,foo,bar,(23,45,200),6

我想创建一个与逗号匹配的正则表达式,但只匹配不在括号内的逗号(在上面的示例中,除23和45之后的两个逗号之外,所有其他逗号)。我将如何做(如果使用Java正则表达式会有所不同)?

回答:

假定没有嵌套的括号(否则,你不能使用Java Regex来完成此任务,因为不支持递归匹配):

Pattern regex = Pattern.compile(

", # Match a comman" +

"(?! # only if it's not followed by...n" +

" [^(]* # any number of characters except opening parensn" +

" ) # followed by a closing parensn" +

") # End of lookahead",

Pattern.COMMENTS);

此正则表达式使用否定的超前断言来确保下一个括号(如果有)不是闭合括号。只有这样,逗号才允许匹配。

以上是 Java正则表达式只匹配逗号而不是括号?的全部内容,

以上是Java正则表达式只匹配逗号而不是括号?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>