使用java.util.regex API-java的正则表达式

时间:2010-08-15 22:32:44

标签: java regex

如何创建正则表达式来搜索具有给定模式的字符串?例如,我想搜索匹配模式'* index.tx?'的所有字符串。现在这应该找到值为index.txt,mainindex.txt和somethingindex.txp的字符串。

Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");

此代码显然无效。

3 个答案:

答案 0 :(得分:3)

您需要learn regular expression syntax与使用通配符相同。试试这个:

Pattern pattern = Pattern.compile("^.*index\\.tx.$");

有很多关于正则表达式here的信息。在学习正则表达式时,您可能会发现程序RegexBuddy很有用。

答案 1 :(得分:1)

*匹配前一个标记的零个或多个匹配项,因此如果要匹配任何字符的零个或多个,请改用.*.匹配任何字符)。< / p>

修改后的正则表达式应如下所示:

Pattern pattern = Pattern.compile("^.*\\.html$");
  • ^匹配字符串的开头
  • .*匹配零个或多个任何字符
  • \\.匹配点字符(如果没有转义则匹配任何字符)
  • $匹配字符串的结尾

答案 2 :(得分:1)

您发布的代码不起作用,因为:

  1. dot .是一个特殊的正则表达式字符。它意味着任何角色的一个实例
  2. *表示前一个字符的出现次数
  3. 因此,.*表示任意数量的任何字符

    所以你需要像

    这样的东西
     Pattern pattern = Pattern.compile(".*\\.html.*");
    

    \\的原因是因为我们想要插入点,尽管它是一个特殊的正则表达式。 这意味着:匹配一个字符串,其中首先有任意数量的百搭字符,后跟一个点,后跟html,后跟任何内容。