我想知道如何使用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]+", "***");
我发现这很难,但还是找不到解决方案。
答案 0 :(得分:2)
使用LOOKAROUNDS
(?<=\s)(?:ass)(?=\s)
将检查单词周围的空格或换行符。
如果您希望即使在非字母字符(:ass:
)包围的情况下对该字词进行审查,请使用:
(?<=\W)(?:ass)(?=\W)
如果您正在寻找不区分大小写的搜索,请在开始时添加(?i)
。
使用单词边界
评论中有人提出了更好的方法:
\b(?:ass)\b
或特殊字符:
\b([&#"'-_$^])?(?:ass)([&#"'-_$^])?\b