【问题标题】:string.matches(regex) returns false, although I think it should be truestring.matches(regex) 返回 false,虽然我认为它应该是 true
【发布时间】:2013-01-14 20:04:35
【问题描述】:

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

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

不管怎样,下面是我的代码。

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

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

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

提前谢谢你!!

【问题讨论】:

  • 换一种方式试试:"kind".matches(oneLine);
  • 至少对于这个例子,你可以使用contains

标签: java regex match


【解决方案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() 来检查字符串的某些部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        相关资源
        最近更新 更多