簡體   English   中英

如何在java中使用regex來更改匹配子串的前綴和后綴

[英]How to use regex in java to change prefix and suffix of matching substrings

我想(在Java中)找到字符串中的任何子字符串,以aba開頭並以aca結尾,其中它們之間有一個或多個非空格字符。

例如,“ blingblangabablahacablingblang會找到子串abablahaca

然后我想替換每個那些子的,修改的開始,只是b和年底ca ,但在離開內部blah ,因為它是。

例如,“ blingblangabablahacablingblang將更改為blingblangbblahcablingblang

有沒有什么方法可以使用String.replaceAll()來做到這一點? 原始字符串中將有許多實例要更改。

謝謝你的幫助。

我不知道Java,但正則表達式應該簡單地用'b $ 1ca'替換'aba(。+?)aca'。

你可以嘗試:

myString.replaceAll("aba(\\w*?)aca", "b$1ca") // would also match abaaca, without blah in the middle

要么

myString.replaceAll("aba(\\w+?)aca", "b$1ca") // match onlu if there is a char between aba and aca

試試這個模式: aba[az]*aca

Pattern p = Pattern.compile("aba[a-z]*aca");
Matcher m = p.matcher("blingblangabablahacablingblang");
while (m.find())
   System.out.println(">" + m.group() + "<");

如果保證abaaca在給定的字符序列中都是唯一的,那么你可以使用舊的String#replace而不是正則表達式:

String result = original.replace("aba","b").replace("aca", "ca");

什么是錯誤的簡單if string.startsWith()和string.endsWith()然后替換子串少然后開始和結束,然后重建新的字符串?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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