使用正则表达式“W o.R-d”.replaceAll(“word”,“replacement”)

时间:2013-04-08 08:41:14

标签: java regex

我的目标是进行审查。目前atm我使用message.replaceAll(“(?i)word”,“replacement”)但这只捕获了未分割的单词。

要绕过此人,只需在删失的字词之间添加不同的字符。

所以我想让“其他人想要Y.O.L.O”变成“其他人想参加派对”而只是寻找'yolo'。保持'。'在那里会有奖金。

1 个答案:

答案 0 :(得分:3)

如何:(将“word”替换为“替换”)

msg.replaceAll("(?i)([^A-Za-z])w[^A-Za-z]?o[^A-Za-z]?r[^A-Za-z]?d([^A-Za-z])",
               "$1replacement$2") );

[^A-Za-z]不是信件 [^A-Za-z]?不是字母(可选)
$1是括号中的第一个内容(第一个([^A-Za-z])
$2是括号中的第一个内容(最后([^A-Za-z])

另一种选择是环视:

msg.replaceAll("(?i)(?<=[^A-Za-z])w[^A-Za-z]?o[^A-Za-z]?r[^A-Za-z]?d(?=[^A-Za-z])",
               "replacement") );

自动生成上述内容并不困难。

现在它已经发布在互联网上,每个人都可以看到并改变他们的垃圾邮件,以免上述情况被发现。

Reference

编辑:我删除了\\b(字边界),因为1word2将被跳过。