簡體   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