繁体   English   中英

查找并替换括号中的字符

[英]Find and replace characters in brackets

我有一个字符串类型:

String text = "(plum) some other words, [apple], another words {pear}.";

我必须找到并替换方括号中的单词,而不要替换方括号本身。

如果我写:

text = text.replaceAll("(\\(|\\[|\\{).*?(\\)|\\]|\\})", "fruit");

我得到:

fruit some other words, fruit, another words fruit.

因此括号与水果一起消失了,但我需要保留它们。


所需的输出:

(fruit) some other words, [fruit], another words {fruit}.

这是您的正则表达式:

(?<=[({\[\(])[A-Za-z]*(?=[}\]\)])

在这里测试:

https://regex101.com/

为了在Java中使用它,请记住添加第二个反斜杠:

(?<=[({\\[\\(])[A-Za-z]*(?=[}\\]\\)])

它匹配0个或多个字母(大写或小写),后跟这些[,{,(后面的任何一个,,},)中的一个。

如果要在方括号之间至少包含1个字母,只需将“ *”替换为“ +”,如下所示:

(?<=[({\[\(])[A-Za-z]+(?=[}\]\)])

GCP展示了如何使用前瞻性和后瞻性从匹配的部分中排除括号。 但是您也可以将它们匹配,并在替换字符串中使用捕获组来引用它们:

text.replaceAll("([\\(\\[\\{]).*?([\\)\\]\\}])", "$1fruit$2");

另请注意,您可以替换| 字符组[] OR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM