如何创建正则表达式来搜索具有给定模式的字符串?例如,我想搜索匹配模式'* index.tx?'的所有字符串。现在这应该找到值为index.txt,mainindex.txt和somethingindex.txp的字符串。
Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");
此代码显然无效。
答案 0 :(得分:3)
您需要learn regular expression syntax。 不与使用通配符相同。试试这个:
Pattern pattern = Pattern.compile("^.*index\\.tx.$");
有很多关于正则表达式here的信息。在学习正则表达式时,您可能会发现程序RegexBuddy很有用。
答案 1 :(得分:1)
*
匹配前一个标记的零个或多个匹配项,因此如果要匹配任何字符的零个或多个,请改用.*
(.
匹配任何字符)。< / p>
修改后的正则表达式应如下所示:
Pattern pattern = Pattern.compile("^.*\\.html$");
^
匹配字符串的开头.*
匹配零个或多个任何字符\\.
匹配点字符(如果没有转义则匹配任何字符)$
匹配字符串的结尾答案 2 :(得分:1)
您发布的代码不起作用,因为:
.
是一个特殊的正则表达式字符。它意味着任何角色的一个实例。*
表示前一个字符的出现次数。因此,.*
表示任意数量的任何字符。
所以你需要像
这样的东西 Pattern pattern = Pattern.compile(".*\\.html.*");
\\
的原因是因为我们想要插入点,尽管它是一个特殊的正则表达式。
这意味着:匹配一个字符串,其中首先有任意数量的百搭字符,后跟一个点,后跟html
,后跟任何内容。