匹配括号内的所有逗号使用正则表达式

孙盼盼

我只想在括号内找到所有逗号,我发现这个正则表达式"(?:\[|(?!^)\G)[^,\]]*\K,"很完美,但在 Java 中不支持。

那么谁能帮我改写这个表达式?我试过但失败了。

例如:“NVL(ab, bc, cd)”,在这种情况下,我只想匹配abbc之后的逗号并替换它们。

第四只鸟

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]

请参阅正则表达式演示Java 演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

匹配 perl 正则表达式中括号和方括号之外的所有逗号

使用正则表达式替换括号内的逗号

正则表达式-括号内的所有内容

正则表达式匹配括号内的所有单词

正则表达式匹配括号内的所有内容忽略嵌套

使用正则表达式匹配包含逗号的单词之前的所有内容

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

正则表达式模式使用逗号分隔值,但保留括号内使用的逗号

如何使用C#和正则表达式删除引号(“)内的所有逗号

如何使用正则表达式将所有内容放在golang的括号内

使用正则表达式查找方括号内的所有文本

如何使用正则表达式替换除括号内的所有内容?

正则表达式匹配括号内的数字,以逗号分隔

正则表达式用于删除括号内的逗号

正则表达式:匹配除括号(C#)内的所有单词以外的所有单词

正则表达式匹配具有递归的逗号分隔的平衡方括号

匹配正则表达式中的所有括号,保留括号以供提取

如何在Java中使用正则表达式替换所有方括号和逗号?

正则表达式,匹配大括号内的值

正则表达式-获取匹配括号内的内容

正则表达式匹配括号内的字母

正则表达式匹配括号内的数值

有没有办法使用正则表达式多次匹配花括号内的特定模式?

使用 .NET 正则表达式提取嵌套匹配括号之间的所有重叠子字符串

什么正则表达式将匹配除逗号','或分号';'之外的所有字符?

正则表达式匹配双引号和单引号之外的所有逗号

用于匹配括号中所有内容的递归正则表达式(PCRE)

如何获得除括号外的所有匹配词?正则表达式/ MySQL

oracle中的正则表达式可以匹配括号之间的所有内容