【问题标题】:What's the difference between "c&&c" and "[c&&c]" in Java's regular expressions? [duplicate]Java正则表达式中的“c&&c”和“[c&&c]”有什么区别? [复制]
【发布时间】:2017-05-10 18:23:29
【问题描述】:

有了这个电话,

System.out.println(Pattern.matches("[c&&c]", "c"));

我收到了true。但是,通过这个调用,

System.out.println(Pattern.matches("c&&c", "c"));

我收到了false。第二次调用没有抛出任何异常,这意味着它是一个有效的正则表达式。 但是,我不确定这是否可以接受,因为在 Java API 中,运算符&& 似乎只出现在括号之间。那么,&& 在第二次调用中的含义是什么? p>

【问题讨论】:

标签: java regex


【解决方案1】:

第二次调用中的&&是什么意思?

[c&&c]character class,表示其中的任何一个字符。

我说对了。

因为c 匹配c&&c 中的任何一个。基本上[c&] 就足够了。

c&&c 字面意思。 c 后跟 & 后跟 & 后跟 c。与c 不匹配。

【讨论】:

  • 只详细说明第一点:[c&&c] 是由c&&c 组成的字符类——当然相当于一个由c& 组成的类,这就是Rahul 所指的。
【解决方案2】:
  • [] 允许您匹配它们之间的任何字符。所以[c&&c] 允许c& 出现在您尝试匹配的字符串中。因此,您只需 c& 即可成功匹配
  • c&&c 是一个文字,它只会与出现在文本中的 c&&c 匹配。所以它与您的测试字符串 c 不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2018-07-18
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2016-06-22
    相关资源
    最近更新 更多