【问题标题】:How to represent an empty character class in Java regex如何在 Java 正则表达式中表示一个空字符类
【发布时间】:2017-02-08 21:17:19
【问题描述】:

我想创建一个不匹配任何字符的字符类。目前,我一直在表示这样的模式:

Pattern p = Pattern.compile("[a&&b]");

甚至

Pattern p = Patterncompile("[^\\x{0}-\\x{10FFFF}]");

有没有合适的方法来做到这一点?

注意:无需提供不涉及字符类的替代解决方案(负前瞻等)。我只是想知道是否有“正确”的方法来做。

更新:我正在实现一项功能,该功能首先向用户打印他输入内容的简化版本。由于我正在简化字符类,因此我当前的版本将只打印[] 以获取诸如[a&&b] 之类的输入。如果我们再次解析[],它会抛出一个错误,这不是我想要的。因此,这就是为什么我想知道是否有一种正确的方法可以通过向他显示 ^$ 之类的内容来不改变用户输入。

【问题讨论】:

  • 为什么需要一个不匹配的正则表达式?当然,您只需要不应用正则表达式吗?或者只是str.isEmpty()
  • 我更新了我的问题...我真的不明白为什么不赞成
  • 我的回答对你有用吗?

标签: java regex character-class


【解决方案1】:

你在那里所做的不是字符类,它们是正则表达式。如果您想匹配空输入(“不匹配任何字符”),请使用^$

【讨论】:

    【解决方案2】:

    尽管这没有多大意义,但您可以在字符类中使用character class subtraction 功能来实际定义一个字符并减去它 - 然后这个类将无法匹配任何内容。

    例子:

    [a&&[^a]]
    

    由于字符类应该只匹配a,而a被减去,这个模式不会匹配任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多