2014-01-08 70 views
0

我有一個要求,我得到一個字符串中,我不得不更換如何替換字符串的兩個子字符串中的文本?

< p811:Credential> and < /p811:Credential> 

之間的值,在這種情況下AAAAA/BBBBBB

只有憑據文本將保持不變所有的時間前綴將不必是相同的

例字符串

1. abc < p811:Credential>AAAAA/BBBBBB< /p811:Credential>xyz
2. gsd< K999:Credential>EEEEE/XXXXX</K999:Credential>tre

我們該怎麼做?

+1

可能重複的[如何替換字符串的子字符串](http://stackoverflow.com/questions/16702357/how-to-replace-a-substring-of-a-string) –

+0

什麼是以前的之後? –

+0

我已編輯該問題以使其更清晰 –

回答

2

爲了解決您的具體問題,你可以給這個代碼:

line=" gsd< K999:Credential>EEEEE/XXXXX</K999:Credential>tre"; 
String REGEX="(?<=Credential\\W?>)(\\w|\\d|/)*(?=<\\W?/\\W?(\\w|\\d)+:Credential\\W?>)"; 

line = line.replaceAll(REGEX, word_to_replace); 
System.out.println(line); 
+0

I對不起,p811不一定總是相同的,也就是說,它可以是這樣的 gsd EEEEE/XXXXX tre –

+0

您可以提供可接受的樣本輸入和不可接受的輸入嗎? –

+0

好的。我編輯了我的答案。 –

0
String search = "abc < p811:Credential>AAAAA/BBBBBB< /p811:Credential>xyz"; 

String regex = "(^.*?< ?[a-zA-Z0-9]{4}:Credential>)(.*?)(< ?/ ?[a-zA-Z0-9]{4}:Credential>.*?$)"; 
String replacement = "$1Replacement Text$3"; 

String result = search.replaceAll(regex, replacement); 

我把3個捕獲組的正則表達式:

  • .........< XXXX:Credential>
  • >XXXX/XXXXX <
  • </XXXX:Credential>.........

然後簡單地把一個簡單的替換文本,它採用反向引用$1$3的字符保存到你所需的匹配的左側和右側。

相關問題