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

时间:2016-09-30 10:12:26

标签: java regex character-class

我想创建一个与任何角色都不匹配的角色类。现在,我一直代表这样的模式:

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

甚至

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

有没有正确的方法呢?

注意:没有必要提供不涉及角色类的替代解决方案(负向前瞻等)。我只是想知道是否有"权利"这样做的方法。

更新:我正在实现一项功能,该功能向用户打印出他首先输入的内容的简化版本。由于我正在简化字符类,因此我的当前版本只会为[]等输入打印[a&&b]。如果我们再次解析[],它将抛出一个错误,这不是我想要的。因此,这就是为什么我想通过向他展示像^$

之类的东西来了解是否有一种正确的方法来做到这一点并不会改变用户输入

2 个答案:

答案 0 :(得分:2)

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

示例:

<?php
$string = "This is a Sample sting of information"; 
$words = array('This is', 'Test', 'sample', 'information', 'sting of informtaion');        

foreach ($words as $word) {
  var_dump(stristr($string,$word) !== false); // this will help you to understand, what is happening here.
  if (stristr($string,$word) !== false) {
      echo $word." - YES<br>";
  }
  else {
      echo $word." - NO<br>";
  }
}

?>

由于字符类只应与information != informtaion匹配,并且[a&&[^a]] 被减去,因此此模式不会与任何内容匹配。

答案 1 :(得分:-2)

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