如何在Python列表中查找regexp模式?

如何在Python列表中查找regexp模式?,python,regex,list,Python,Regex,List,我有一个坏词的清单。比如说: BAD_WORDS = ['bw1', 'bw2',...] 现在我想知道在如下代码中检查长字符串(也称为django请求帖子)最有效的方法是什么: if re.search(comment.body) in BAD_WORDS: dosomething; 最好的方法是用一种表达方式来表达所有的坏话: import re bad_words = ['bw1', 'bw2', ... ] my_expression = '|'.

我有一个坏词的清单。比如说:

BAD_WORDS = ['bw1', 'bw2',...] 
现在我想知道在如下代码中检查长字符串(也称为django请求帖子)最有效的方法是什么:

if re.search(comment.body) in BAD_WORDS:        
        dosomething;

最好的方法是用一种表达方式来表达所有的坏话:

import re
bad_words = ['bw1', 'bw2', ... ]

my_expression = '|'.join(re.escape(word) for word in bad_words)
if re.search(my_expression, comment.body):
    do_something()

最好的方法是用一种表达方式来表达所有的坏话:

import re
bad_words = ['bw1', 'bw2', ... ]

my_expression = '|'.join(re.escape(word) for word in bad_words)
if re.search(my_expression, comment.body):
    do_something()

最好的方法是用一种表达方式来表达所有的坏话:

import re
bad_words = ['bw1', 'bw2', ... ]

my_expression = '|'.join(re.escape(word) for word in bad_words)
if re.search(my_expression, comment.body):
    do_something()

最好的方法是用一种表达方式来表达所有的坏话:

import re
bad_words = ['bw1', 'bw2', ... ]

my_expression = '|'.join(re.escape(word) for word in bad_words)
if re.search(my_expression, comment.body):
    do_something()

您可以为此使用
任何

要仅匹配子字符串非精确单词,可以使用
中的

if any(word in comment.body for word in BAD_WORDS):
    #do something
要匹配精确的单词,请使用正则表达式
regex

import re
if any(re.search(r'\b{}\b'.format(re.escape(word)), comment.body)
                                                            for word in BAD_WORDS):
    #do something

您可以为此使用
任何

要仅匹配子字符串非精确单词,可以使用
中的

if any(word in comment.body for word in BAD_WORDS):
    #do something
要匹配精确的单词,请使用正则表达式
regex

import re
if any(re.search(r'\b{}\b'.format(re.escape(word)), comment.body)
                                                            for word in BAD_WORDS):
    #do something

您可以为此使用
任何

要仅匹配子字符串非精确单词,可以使用
中的

if any(word in comment.body for word in BAD_WORDS):
    #do something
要匹配精确的单词,请使用正则表达式
regex

import re
if any(re.search(r'\b{}\b'.format(re.escape(word)), comment.body)
                                                            for word in BAD_WORDS):
    #do something

您可以为此使用
任何

要仅匹配子字符串非精确单词,可以使用
中的

if any(word in comment.body for word in BAD_WORDS):
    #do something
要匹配精确的单词,请使用正则表达式
regex

import re
if any(re.search(r'\b{}\b'.format(re.escape(word)), comment.body)
                                                            for word in BAD_WORDS):
    #do something

回答很好,但是,我会将
flags=re.IGNORECASE
传递到re.search中,以说明案例不敏感。@Rishi我认为这必须由实现者决定,而不是由回答者建议。这可能是因为
ass
是一部经过审查的作品,但是
ass
是多愁善感的智者协会等等。@Rishi我应该如何添加这个标志?@supermario
re.search(我的表达式,comment.body,flags=re.IGNORECASE)
答案不错,我会将
flags=re.IGNORECASE
传递到re.search中,以说明大小写不敏感。@Rishi我认为这必须由实现者决定,而不是由回答者建议。这可能是因为
ass
是一部经过审查的作品,但是
ass
是多愁善感的智者协会等等。@Rishi我应该如何添加这个标志?@supermario
re.search(我的表达式,comment.body,flags=re.IGNORECASE)
答案不错,我会将
flags=re.IGNORECASE
传递到re.search中,以说明大小写不敏感。@Rishi我认为这必须由实现者决定,而不是由回答者建议。这可能是因为
ass
是一部经过审查的作品,但是
ass
是多愁善感的智者协会等等。@Rishi我应该如何添加这个标志?@supermario
re.search(我的表达式,comment.body,flags=re.IGNORECASE)
答案不错,我会将
flags=re.IGNORECASE
传递到re.search中,以说明大小写不敏感。@Rishi我认为这必须由实现者决定,而不是由回答者建议。可能是
ass
是经过审查的作品,但
ass
是多愁善感的智者协会等。@Rishi我应该如何添加标志?@supermario
re.search(我的表达式,comment.body,flags=re.IGNORECASE)