[英]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]*(?=[}\]\)])
在這里測試:
為了在Java中使用它,請記住添加第二個反斜杠:
(?<=[({\\[\\(])[A-Za-z]*(?=[}\\]\\)])
它匹配0個或多個字母(大寫或小寫),后跟這些[,{,(后面的任何一個,,},)中的一個。
如果要在方括號之間至少包含1個字母,只需將“ *”替換為“ +”,如下所示:
(?<=[({\[\(])[A-Za-z]+(?=[}\]\)])
GCP展示了如何使用前瞻性和后瞻性從匹配的部分中排除括號。 但是您也可以將它們匹配,並在替換字符串中使用捕獲組來引用它們:
text.replaceAll("([\\(\\[\\{]).*?([\\)\\]\\}])", "$1fruit$2");
另請注意,您可以替換|
字符組[]
OR。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.