-2

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

要绕过这个人们只需在被审查的词之间添加一个不同的字符。

所以我想让“任何人都想参加 YOLO”变成“任何人都想参加派对”,而只是在寻找“yolo”。保留“。” 那里会有奖金。

4

1 回答 1

3

怎么样:(用“替换”替换“单词”)

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]is not a letter
[^A-Za-z]?不是字母(可选)
$1是括号中的第一件事(first ([^A-Za-z])
$2是括号中的第一件事(last ([^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") );

给定一个单词,自动生成上述内容并不难。

现在它已发布在互联网上,每个人都可以看到它并更改他们的垃圾邮件以不被上述内容接收。

参考

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

于 2013-04-08T08:45:59.800 回答