如何使用Regex在Java中检查SPECIFIC单词

时间:2015-04-17 03:52:56

标签: java regex profanity

我想知道如何使用Java Regex高度安全地审查“屁股”(或A字)这个词。

这使事情变得困难,因为A字可以包含在许多其他无害的词中。例如,“草。”

我已经部分地设置了A字的许多前缀的开头部分,但似乎无法找到如何审查该字而不审查像“刺客”这样的后缀。

String string = String.replaceAll("^(?!(b|B|gr|gR|Gr|GR|gl|gL|Gl|GL|m|M|s|S|h|H|p|P|g|G)).*[aA4]+[\\W[_]]*?[$5SszZ]+[\\W[_]]*?[$5SszZ]+", "***");

我发现这很难,但还是找不到解决方案。

1 个答案:

答案 0 :(得分:2)

使用LOOKAROUNDS

(?<=\s)(?:ass)(?=\s)

将检查单词周围的空格或换行符。 如果您希望即使在非字母字符(:ass:)包围的情况下对该字词进行审查,请使用:

(?<=\W)(?:ass)(?=\W)

如果您正在寻找不区分大小写的搜索,请在开始时添加(?i)

使用单词边界

评论中有人提出了更好的方法:

\b(?:ass)\b

或特殊字符:

\b([&#"'-_$^])?(?:ass)([&#"'-_$^])?\b