JAVA检查句子中以正则表达式结尾的多个字符串

时间:2017-08-02 18:08:14

标签: java regex

我有句jafjaklf domain1-12-123.eng.abc.com amkfg,fmgsklfgm domain2-134-135.eng.abc.com。我想将以.eng.abc.com结尾的单词替换为“”。

我使用了正则表达式模式:

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

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

任何人都可以帮我解决模式

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

if(str.matches(".*com.?$") || str.matches(".*abc.?$") || str.matches(".*eng.?$"))