Java模式匹配除给定列表之外的任何字符序列

Mar*_*rio 8 java regex

如何编写模式(Java)以匹配除给定的单词列表之外的任何字符序列?

我需要找出给定代码是否有任何文本被标签包围,除了给定的单词列表.例如,我想检查标签周围是否还有"one"和"two"之外的任何其他单词.

"This is the first tag <span>one</span> and this is the third <span>three</span>"
Run Code Online (Sandbox Code Playgroud)

该模式应与上述字符串匹配,因为单词"three"由标记包围,并且不是给定单词列表的一部分("one","two").

Tom*_*lak 8

前瞻可以做到这一点:

\b(?!your|given|list|of|exclusions)\w+\b
Run Code Online (Sandbox Code Playgroud)

火柴

  • 单词边界(单词开头)
  • 没有跟随任何"你的","给定","列表","的","排除"
  • 后跟多个单词字符
  • 后跟一个单词边界(词尾)

实际上,这匹配任何未排除的单词.


Sar*_*tha 2

用这个:

if (!Pattern.matches(".*(word1|word2|word3).*", "word1")) {
    System.out.println("We're good.");
};
Run Code Online (Sandbox Code Playgroud)

您正在检查模式是否与字符串不匹配。