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

使用java.util.regex API的正则表达式-java,java,regex,Java,Regex,如何创建正则表达式来搜索具有给定模式的字符串?例如,我想搜索与模式“*index.tx”匹配的所有字符串。现在应该可以找到值为index.txt、maindex.txt和somethinginindex.txp的字符串 Pattern pattern = Pattern.compile("*.html"); Matcher m = pattern.matcher("input.html"); 此代码显然不起作用。您需要这样做。这与使用通配符不同。试试这个: Pattern pattern =

如何创建正则表达式来搜索具有给定模式的字符串?例如,我想搜索与模式“*index.tx”匹配的所有字符串。现在应该可以找到值为index.txt、maindex.txt和somethinginindex.txp的字符串

Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");
此代码显然不起作用。

您需要这样做。这与使用通配符不同。试试这个:

Pattern pattern = Pattern.compile("^.*index\\.tx.$");
关于正则表达式有很多信息。在学习正则表达式时,您可能会发现该程序很有用。

您需要这样做。这与使用通配符不同。试试这个:

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

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

*
匹配前面标记的零次或多次出现,因此如果要匹配任何字符的零次或多次出现,请改用
*
匹配任何字符)

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

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

*
匹配前面标记的零次或多次出现,因此如果要匹配任何字符的零次或多次出现,请改用
*
匹配任何字符)

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

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

您发布的代码无效,因为:

  • 是一个特殊的正则表达式字符。它表示任何字符的一个实例
  • *
    表示前面字符出现的任意次数
  • 因此,
    *
    表示任何字符出现的次数

    所以你需要像这样的东西

     Pattern pattern = Pattern.compile(".*\\.html.*");
    
    之所以使用
    \\
    ,是因为我们想插入点,尽管它是一个特殊的正则表达式符号。
    这意味着:匹配一个字符串,其中首先有任意数量的通配符,后跟一个点,后跟
    html
    ,后跟任何字符。

    您发布的代码无效,因为:

  • 是一个特殊的正则表达式字符。它表示任何字符的一个实例
  • *
    表示前面字符出现的任意次数
  • 因此,
    *
    表示任何字符出现的次数

    所以你需要像这样的东西

     Pattern pattern = Pattern.compile(".*\\.html.*");
    
    之所以使用
    \\
    ,是因为我们想插入点,尽管它是一个特殊的正则表达式符号。 这意味着:匹配一个字符串,其中首先有任意数量的通配符,后跟一个点,后跟
    html
    ,后跟任何字符