string.matches(regex)返回false,虽然我认为它应该是真的

时间:2013-01-30 20:57:10

标签: java regex match

我正在使用Java正则表达式。

哦,我真的很想念Perl !! Java正则表达式非常难。

无论如何,下面是我的代码。

oneLine = "{\"kind\":\"list\",\"items\"";
System.out.println(oneLine.matches("kind"));

我希望屏幕上显示“true”,但我只能看到“false”。

代码有什么问题?我该如何解决?

提前谢谢!!

3 个答案:

答案 0 :(得分:8)

String#matches()将正则表达式作为参数,其中锚是隐式的。因此,您的正则表达式模式将在开头匹配,直到字符串结束。

由于您的字符串不是以"kind"开头,因此它会返回false

现在,根据您当前的问题,我认为您不需要在此使用regex。只需使用String#contains()方法就可以了: -

oneLine.contains("kind");

或者,如果你想使用matches,那么构建正则表达式以匹配完整的字符串: -

oneLine.matches(".*kind.*");

答案 1 :(得分:4)

.matches方法旨在匹配整个字符串。所以你需要这样的东西:

.*kind.*

演示:http://ideone.com/Gb5MQZ

答案 2 :(得分:2)

匹配尝试匹配整个字符串(隐式^$锚点),您希望使用contains()来检查字符串的各个部分。