我有句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"
。
任何人都可以帮我解决模式
答案 0 :(得分:2)
您想要匹配的“单词”似乎可能包含非单词字符。我建议使用\S
非空白模式匹配这些部分:
\b\S*\.eng\.abc\.com\b
请参阅regex demo
<强>详情:
\b
- 字边界\S*
- 除了空格之外的0个字符\.eng\.abc\.com
- 文字.eng.abc.com
子字符串\b
- 结束语。不要忘记将Java字符串文字中的反斜杠加倍。
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.endsWith
和String.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.?$"))