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

JSo*_*ong 6 java regex match

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

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

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

oneLine = "{\"kind\":\"list\",\"items\"";
System.out.println(oneLine.matches("kind"));
Run Code Online (Sandbox Code Playgroud)

我希望屏幕上显示"true",但我只能看到"false".

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

先感谢您!!

Roh*_*ain 8

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

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

现在,根据您当前的问题,我认为您不需要在regex这里使用.简单地使用String#contains()方法将工作正常: -

oneLine.contains("kind");
Run Code Online (Sandbox Code Playgroud)

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

oneLine.matches(".*kind.*");
Run Code Online (Sandbox Code Playgroud)


rsp*_*rsp 2

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