我正在尝试使用正则表达式来构建一个字滤镜。 目前,我有这种形式的东西:
value = re.sub(r'(([q])[ ]*[w][ ]*[e][ ]*[r])', r'\2***', value, flags=re.IGNORECASE)
我希望能够做类似
的事情value = regex_gen("qwer", value)
我的regex_gen函数如下所示:
def regex_gen(filter_word, string):
first = 0
regex = "r'("
regex_result = "r'"
for c in filter_word:
if first == 0:
regex += "([" + c + "])"
regex_result += "\2"
first += 1
else:
regex += "[ ]*[" + c + "]"
regex_result += "*"
regex += ")'"
regex_result += "'"
final = re.sub(regex, regex_result, string, flags=re.IGNORECASE)
return final
但是我的regex_gen函数不起作用 到目前为止,我只考虑字符和字符大小写之间的空格。如果文字过滤器的其他方法更容易实现,那么
答案 0 :(得分:0)
目前,您拥有变量r'...'
和regex
的{{1}}。更改代码,以便它不会在其上添加这些字符。例如,替换:
regex_results
进入 regex = "r'("
regex = "("
进入 regex_result = "r'"
regex_result = ""
进入 regex += ")'"
删除 regex += ")"
将regex_result += "'"
替换为\2
。例如:
\\2
现在再次运行您的代码。