如何在 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
被减去,这个模式将不匹配任何东西。
我想创建一个不匹配任何字符的字符 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
被减去,这个模式将不匹配任何东西。