string.matches(regex) 返回 false,虽然我认为它应该是 true
Posted
技术标签:
【中文标题】string.matches(regex) 返回 false,虽然我认为它应该是 true【英文标题】:string.matches(regex) returns false, although I think it should be true 【发布时间】:2013-01-14 20:04:35 【问题描述】:我正在使用 Java 正则表达式。
哦,我真的很想念 Perl! Java 正则表达式太难了。
不管怎样,下面是我的代码。
oneLine = "\"kind\":\"list\",\"items\"";
System.out.println(oneLine.matches("kind"));
我希望屏幕上显示“真”,但我只能看到“假”。
代码有什么问题?我该如何解决?
提前谢谢你!!
【问题讨论】:
换一种方式试试:"kind".matches(oneLine); 至少对于这个例子,你可以使用contains
。
【参考方案1】:
String#matches()
将正则表达式作为参数,其中锚点是隐式的。因此,您的正则表达式模式将在字符串的开头匹配到结尾。
由于您的字符串不是以"kind"
开头,所以它返回false
。
现在,根据您当前的问题,我认为您不需要在这里使用regex
。只需使用String#contains()
方法就可以正常工作:-
oneLine.contains("kind");
或者,如果您想使用matches
,则构建正则表达式以匹配完整的字符串:-
oneLine.matches(".*kind.*");
【讨论】:
【参考方案2】:.matches
方法旨在匹配 整个 字符串。所以你需要这样的东西:
.*kind.*
演示:http://ideone.com/Gb5MQZ
【讨论】:
【参考方案3】:Matches 尝试匹配整个字符串(隐式 ^
和 $
锚点),您想使用 contains()
来检查字符串的某些部分。
【讨论】:
以上是关于string.matches(regex) 返回 false,虽然我认为它应该是 true的主要内容,如果未能解决你的问题,请参考以下文章