2017-08-02 4 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それはあなたのために働いてうれしいです。私の答えがあなたにとって有益であると判明した場合には、upv​​otingを検討してください([Stack Overflowについてのアップルのしくみ?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)参照) 。 –

答えて

2

で私を助けてもらえます。

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

regex demo

詳細を参照してください:私は\S、非空白パターンでそれらの部品に一致することをお勧め

  • \b - 単語境界
  • \S* - 0+空白以外の文字
  • \.eng\.abc\.com - aリテラル.eng.abc.comサブストリング
  • \b - end of word。

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