如果字符串至少包含列表中的一个元素,我想创建一个匹配的RE对象。
例如,如果bad_words["censored","stupid","idiot"]
是列表,那么如果至少存在其中一个,RE将匹配。
这是我的RE:re.compile("(%s)+" % ("|".join(bad_words)), re.IGNORECASE)
问题是'youareanidiot'不匹配。为了使其匹配,我需要更改什么?
答案 0 :(得分:11)
虽然可以用正则表达式做到这一点,但我认为如果没有正则表达式,你会更好。要针对s
测试字符串bad_words
,请尝试类似
s = s.lower()
any(bad in s for bad in bad_words)
您的bad_words
应该都是小写。
答案 1 :(得分:4)
您使用的是re.match吗?尝试re.search。请参阅Python正则表达式文档中的Matching vs. Searching。
import re
bad_words = ["stupid", "idiot"]
regex = re.compile("|".join(re.escape(word) for word in bad_words), re.IGNORECASE)
print regex.search('youareanidiot').group()
# prints "idiot"