我的目标是进行审查。目前atm我使用message.replaceAll(“(?i)word”,“replacement”)但这只捕获了未分割的单词。
要绕过此人,只需在删失的字词之间添加不同的字符。
所以我想让“其他人想要Y.O.L.O”变成“其他人想参加派对”而只是寻找'yolo'。保持'。'在那里会有奖金。
答案 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") );
自动生成上述内容并不困难。
现在它已经发布在互联网上,每个人都可以看到并改变他们的垃圾邮件,以免上述情况被发现。
编辑:我删除了\\b
(字边界),因为1word2将被跳过。