如何在 Java 正则表达式中表示空字符 class

How to represent an empty character class in Java regex

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

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

甚至

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

有没有正确的方法来做到这一点?

注意:无需提供不涉及字符 class 的替代解决方案(否定前瞻等)。我只是想知道是否有 "right" 方法来做到这一点。

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

之类的东西来改变用户输入

你做的不是字符类,它们是正则表达式。如果你想匹配空输入("doesn't match any character" 用你的话),使用 ^$.

虽然这没有多大意义,但您可以在字符 class 中使用 character class subtraction 功能来实际定义一个字符并减去它 - 那么这个 class 将无法匹配任何东西。

示例:

[a&&[^a]]

由于字符 class 应该只匹配 a,并且 a 被减去,这个模式将不匹配任何东西。