2017-08-02 52 views
2

我有一句話jafjaklf domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135.eng.abc.com。我想用「」替換以.eng.abc.com結尾的單詞。JAVA檢查以正則表達式模式結尾的多個字符串

我用正則表達式模式:

\b(.*\.eng\.abc\.com)\b 

但是它匹配" domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135.eng.abc.com"

誰能幫助我的模式

+1

這是一個簡單的與string.replace - 你爲什麼需要正則表達式? – alfasin

+0

@ pd26很高興爲你效勞。如果我的回答對你有幫助,請考慮upvoting(參見[如何在堆棧溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) 。 –

回答

2

看來,「話」要匹配可能包含非字字符。我建議符合這些零件用\S,非空白模式:

\b\S*\.eng\.abc\.com\b 

regex demo

詳細

  • \b - 一個字邊界
  • \S* - 0+字符以外的字符
  • \.eng\.abc\.com - 一個文字.eng.abc.com子串
  • \b - 詞的結尾。

不要忘記在Java字符串文字中加雙反斜線。

Java demo:

String s = "jafjaklf domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135.eng.abc.com"; 
String pat = "\\s*\\b\\S*\\.eng\\.abc\\.com\\b"; 
String res = s.replaceAll(pat ,""); 
System.out.println(res); 
// => jafjaklf amkfg,fmgsklfgm 
0

你並不需要使用正則表達式,你可以使用String.endsWithString.substring

String str = "domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135.eng.abc.com"; 
if (str.endsWith(".eng.abc.com")) { 
    str = str.substring(0, str.length() - 12); 
} 
System.out.println(str); // domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135 
0
if(str.matches(".*com.?$") || str.matches(".*abc.?$") || str.matches(".*eng.?$")) 
+0

總是建議您提供您的答案的描述以及爲什麼您認爲它是正確的。僅有代碼的答案往往會被忽視。 –

+0

@PatrickQ我會從下一次開始照顧,對不起 – Akash

相關問題