[英]How to skip a specific word when replace the String using regexp in java
考慮字符串
String s = "H_ello pe_rfec_t wor_ld"
我想替換...上的所有“ _”符號,無論如何,讓我們說“ 1”,除了那些放置在“ pe_rfec_t”內部的符號。 我什至找不到任何解決方案,甚至只是跳過單詞“ pe_rfec_t”:
s = s.replaceAll("(?<=pe_rfec_t).*|.*(?=pe_rfec_t)", "1");
一眼看上去不錯,但結果是:
11pe_rfec_t1 //instead of 1111111pe_rfec_t1111111
理想情況下,我需要以下結果:
Hello pe_rfec_t world
有人可以幫我嗎?
您可以使用交替和捕獲組:
String str = "H_ello pe_rfec_t wor_ld";
String repl = str.replaceAll("(pe_rfec_t)|_", "$1");
//=> Hello pe_rfec_t world
在這里,我們交替匹配第一個pe_rfec_t
並將其捕獲在組#1中。 在補給中,我們放回$1
(向第一組的反向引用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.