正则表达式 – 使用正则表达式的亵渎过滤器(100个单词的列表)

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用正则表达式的亵渎过滤器(100个单词的列表)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从给定的字符串中删除亵渎单词的正确方法是什么:
1)我有一个字符串数组中要查找的100个单词的列表.
2)处理部分单词的正确方法是什么?大多数人如何处理这个问题?例如单词mass.然后有时候一个部分词也是坏的 – 假设foobar是一个非常亵渎的词我可能想要禁止foobar和foobar *和* foobar.

那么你把所有单词放在一个表达式中还是循环遍历列表?

解决问题的正确方法是什么?我正在使用Groovy / Grails,但欢迎任何现代语言示例.

这是一个非常难以解决的问题,您需要确定正则表达式是否适合您以及如何处理嵌入(当您将字典单词添加到像Frackface这样的亵渎语言时除了真正的F-word之外).

正则表达式通常限制它们可以存在多长时间,这通常会阻止您对所有单词使用单个正则表达式.对字符串执行多个正则表达式非常慢,具体取决于您需要的性能以及黑名单的大小.我们最初将CleanSpeak作为正则表达式系统实现,但它没有扩展,我们使用不同的机制重写了它.

您还需要考虑短语,标点符号,空格,leet-speak和其他语言.所有这些都使正则表达式作为解决方案不那么吸引人.以下是使用单词hello的一些示例(假设它是本练习的亵渎):

>列表项目
>你好
> h.e.l.l.o
> h_e_l_l_o
> | – | ello
> h3llo
>“你好那里”(这句话可能不包含任何亵渎的词语,但结合起来他们是亵渎的)

您还需要处理两个或多个字典(白名单)单词彼此相邻时包含亵渎语言的边缘情况.一些包含s-word的示例:

>打击它
> ssh这是安静的时间

这显然不是亵渎,但大多数本土和许多商业解决方案都存在问题.

我们花了最近3年的时间来完善CleanSpeak使用的过滤器,以确保它能够处理所有这些情况,并且我们会继续调整它并使其更好.我们还花了8个月来完善我们的性能系统,它每秒可以处理大约5,000条消息.并不是说你不能构建可用的东西,而是准备好处理可能出现的很多问题,并且还要创建一个不使用正则表达式的系统.

猜你在找的正则表达式相关文章