小编典典

如何使用正则表达式Java在方括号内用下划线替换破折号

java

我试图用下划线替换方括号内的破折号,但它用字符串中的下划线替换所有破折号。

例如,我要替换

"[a]-[a-gamma]"

"[a]-[a_gamma]"

但是它将下划线替换字符串中的 所有 破折号。


阅读 376

收藏
2020-11-30

共1个答案

小编典典

您可以使用

String n="[a]-[a-gamma]";
System.out.println(n.replaceAll("-(?=[^\\[\\]]*\\])", "_"));

至于正则表达式本身,-只有在符号后跟非[s和非]s的情况下,我才会匹配该符号,直到引擎找到为止]。然后,我们在[]s中。可能情况并非如此(第4个连字符[a-z]-[a-z] - ] [a-z]),但我希望这不是您的情况。

IDEONE演示

输出:

[a]-[a_gamma]
2020-11-30