我想创建一个正则表达式模式,该模式可以成功匹配仅当模式字符串跟随时,匹配测试字符串或输入字符串中的任何其他字符串!这是我试过的:
Pattern p = Pattern.compile("google.com");//I want to know the right format
String input1 = "mail.google.com";
String input2 = "mail.google.com.co.uk";
Matcher m1 = p.matcher(input1);
Matcher m2 = p.matcher(input2);
boolean found1 = m1.find();
boolean found2 = m2.find();//This should be false because "google.com" is followed by ".co.uk" in input2 string
任何帮助将不胜感激!
答案 0 :(得分:2)
您的模式应为google\.com$
。 $
字符与行尾相匹配。有关详细信息,请参阅regex boundary matchers。
答案 1 :(得分:2)
以下是匹配和获取非匹配部分的方法。
以下是原始正则表达式模式,作为great regular expression tool
的交互式链接 ^
- 匹配字符串
的开头
(.*)
- 捕捉群组中的所有内容,直到下一场比赛为止
谷歌 - 匹配谷歌文字
\.
- 匹配.
字面必须使用\
转义
com
- 匹配com literal
$
- 匹配字符串的结尾
注意:在Java中,字符串文字中的\
也必须进行转义! ^(.*)google\\.com$
答案 2 :(得分:1)
Pattern p = Pattern.compile("google\.com$");
美元符号表示它必须出现在正在测试的行/字符串的末尾。另请注意,您的点将匹配任何字符,因此如果您希望它只匹配一个点,则需要将其转义。
答案 3 :(得分:1)
您应该使用google\.com$
。 $
字符与行尾相匹配。
Pattern p = Pattern.compile("google\\.com$");//I want to know the right format
String input2 = "mail.google.com.co.uk";
Matcher m2 = p.matcher(input2);
boolean found2 = m2.find();
System.out.println(found2);
输出= false