有没有办法指定使用正则表达式来显示不包含特定文本的结果

时间:2014-07-28 20:41:48

标签: java regex

有没有办法指定使用正则表达式来显示不包含特定文本的结果。类似于

的内容
  

从表中选择*,其中id不在{3,4,6};

3 个答案:

答案 0 :(得分:1)

[^ 346] - 除3,4,6之外的任何角色。这是你问的吗?

答案 1 :(得分:0)

如何简单地查找文本,并在结果上使用not运算符?

List<String> list = ...
list = list.stream()
    .filter(string -> !string.matches("[346]")) // note the !
    .collect(Collectors.toList());

答案 2 :(得分:0)

根据您的示例,请考虑以下代码:

Stream.of("13","11","3","33","3a")
  .filter(s -> s.matches("(?!3$|4$|6$)\\d+"))
  .forEach(System.out::println);

它只会选择那些纯数字的字符串,但不匹配&#34; 3&#34;,&#34; 4&#34;或&#34; 6&#34;。

正则表达式的主要特征是

(?!3$|4$|6$)

这是负向前瞻,它与确切的字符串&#34; 3&#34;,&#34; 4&#34;和&#34; 6&#34;匹配。由于它的否定,整个表达式在此部分不匹配时匹配。