6

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

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

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

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

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

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

先感谢您!!

4

3 回答 3

8

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

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

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

oneLine.contains("kind");

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

oneLine.matches(".*kind.*");
于 2013-01-30T21:01:17.950 回答
4

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

.*kind.*

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

于 2013-01-30T20:59:52.340 回答
2

Matches 尝试匹配整个字符串(隐式^$锚点),您想使用它contains()来检查字符串的某些部分。

于 2013-01-30T20:59:40.137 回答