首页 > 解决方案 > 什么都不匹配的正则表达式字符类?

问题描述

我想知道是否有一种方法可以表示一个不匹配的字符类。有人可以告诉我是否有办法吗?谢谢。

$ grep '[]' <<< a
grep: Unmatched [, [^, [:, [., or [=

标签: regex

解决方案


在 Java 中可以做到这一点。Java 的Pattern类允许您创建一个字符类,它是其他两个字符类的交集。所以,如果我创建了两个没有共同字符的字符类,并取它们的交集,那么我创建了一个实际上不匹配任何字符的字符类。考虑以下代码示例。

String input = "abcdefghijklmnopqrstuvwxyz";
Pattern unPattern = Pattern.compile("[a-c&&[d-f]]");
Matcher unMatcher = unPattern.matcher(input);
System.out.println("Starting matching...");
while (unMatcher.find()) {
  System.out.println("Matched " + unMatcher.group());
}
System.out.println("Ending matching.");

在上面的示例中,我有一个匹配“a”、“b”和“c”的字符类。我有第二个字符类匹配“d”、“e”和“f”。我使用运算符将​​它们相交&&。由于没有通用字符,因此此正则表达式不会匹配任何内容。话虽如此,我不知道这可能有什么用。但这是可能的。


推荐阅读