为什么这个字符串正则表达式匹配?

时间:2015-05-07 15:43:55

标签: java regex

我有一个字符串和一个简单的模式(带有通配符的字符串)。当我使用match函数时,我希望它为我的文本返回true,但它不会返回false。

String text = "test_1_2_3";
String pattern = "test_*"

text.matches(pattern);//this returns false

4 个答案:

答案 0 :(得分:2)

_*将匹配字符_字面between zero and more times,而您需要.*匹配任意字符的零次和多次:

"test_.*"

Demo

答案 1 :(得分:1)

pattern = "test_*"表示"test",0或更多"_"

答案 2 :(得分:1)

由于您的test_*模式与Matcher#matches相结合,将匹配整个输入(即从开始到结束),符合以下条件:

  • test
  • 开头
  • 后跟(并以 0 _或更多的实例结束(此处为贪婪量化)。

在这种情况下,使用Matcher#find会返回true,因为它会与部分test_匹配。

因此,您的matches调用将使用给定的true返回Pattern,其输入如下:

  • test_
  • test__
  • ......等等。

API

答案 3 :(得分:0)

您的正则表达式将匹配测试,然后是零或更多' _'字符。 我想你想要这个:

String text = "test_1_2_3";
String pattern = "test_.*";