我只想在括号内找到所有逗号,我发现这个正则表达式"(?:\[|(?!^)\G)[^,\]]*\K,"
很完美,但在 Java 中不支持。
那么谁能帮我改写这个表达式?我试过但失败了。
例如:“NVL(ab, bc, cd)”,在这种情况下,我只想匹配ab和bc之后的逗号并替换它们。
Java 支持在后视断言中使用有限量词,因此您可以[
在左侧和]
右侧匹配逗号断言 a 。
假设没有嵌套的方括号:
(?<=\[[^\]\[]{0,100}),(?=[^\]\[]*])
解释
(?<=\[[^\]\[]{0,100})
正向后视,[
向左断言,例如在 0 - 100 次出现的任何字符的有限范围内,除了[
和]
,
匹配要替换的逗号(?=[^\]\[]*])
正向前瞻,]
向右断言例如:
String regex = "(?<=\\[[^\\]\\[]{0,100}),(?=[^\\]\\[]*])";
String string = "test , test ,, [,,test,]";
Pattern pattern = Pattern.compile(regex,);
Matcher matcher = pattern.matcher(string);
System.out.println(matcher.replaceAll("X"));
输出
test , test ,, [XXtestX]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句