我正在尝试向我们拥有的聊天服务添加更有效的发誓过滤器,但似乎无法让我的正则表达式在我的实时 django 服务器上工作。
我在 Python 2.6.7 上运行最新的稳定 Django。
这是我的代码:
def replacement(match):
return "*" * len(match.group(0))
def censored_string(cFilter, dirty):
clean = str(dirty)
wordList = cFilter.mutations.split(',')
wordList.sort(key = len)
wordList.reverse()
for swear_word in wordList:
target_word = swear_word.strip()
result = re.sub("(?i)\\b(("+target_word+"){1,})(s{0,1})\\b",replacement, clean)
clean = result
return clean
记录在案 - 这可以使用我的本地服务器设置工作,我可以确认它也使用 python 2.6.7 和相同的 django 版本,但是自大约 10 个月前以来我没有做太多 django 或 python 并且最近继承了这个服务器设置 - 如果我缺少一些东西,请告诉我。
错误的输出如下:
{
"error_message": "multiple repeat",
"traceback": ... "result = re.sub(\"(?i)\\\\b(\"+target_word+\"){1,}(s{0,1})\\\\b\",censored_word(target_word), clean)\n\n File \"/usr/lib/python2.6/re.py\", line 151, in sub\n return _compile(pattern, 0).sub(repl, string, count)\n\n File \"/usr/lib/python2.6/re.py\", line 245, in _compile\n raise error, v # invalid expression\n\nerror: multiple repeat\n"
}
我尝试过有无贪心等等,但现在迷路了 - 任何输入将不胜感激
干杯,
迈克尔