Java字过滤器使用正则表达式?

时间:2013-06-07 14:58:35

标签: java regex

我正在尝试创建一个字词过滤器,用户可以在其中替换某些字词。但是,显然有一些我不希望它过滤的东西(例如,除了其他词之外的单词)。

到目前为止,我有这个:

msg = msg.replaceAll("(?i)\\b[^\\w -]*"+original+"[^\\w -]*\\b", replacement);

在大多数情况下,它的效果相对较好。但是,有一个小故障。

当我用“r”代替“m”时,它会替换“我”中的“m” - 这意味着它变成了“我”,这显然是一个错误。

我希望你理解我的意思。帮助

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

//If "X-Men" counts as one word:
msg = msg.replaceAll("(?i)(?<![\\w'-])"+original+"(?![\\w'-])", replacement);
//If "X-Men" counts as two words:
msg = msg.replaceAll("(?i)(?<![\\w'])"+original+"(?![\\w'])", replacement);