如何创建一个只在某个位置匹配字符串的java正则表达式模式?

时间:2012-02-23 01:29:24

标签: java regex

我想创建一个正则表达式模式,该模式可以成功匹配仅当模式字符串跟随时,匹配测试字符串或输入字符串中的任何其他字符串!这是我试过的:

      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

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:2)

您的模式应为google\.com$$字符与行尾相匹配。有关详细信息,请参阅regex boundary matchers

答案 1 :(得分:2)

以下是匹配和获取非匹配部分的方法。

以下是原始正则表达式模式,作为great regular expression tool

的交互式链接

^(.*)google\.com$

^ - 匹配字符串
的开头 (.*) - 捕捉群组中的所有内容,直到下一场比赛为止 谷歌 - 匹配谷歌文字
\. - 匹配.字面必须使用\转义 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