簡體   English   中英

在Java中使用regexp替換字符串時如何跳過特定單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM