Python 编译每行一个模式的正则表达式
我有多种模式要检查。说Python 编译每行一个模式的正则表达式,python,regex,python-2.7,Python,Regex,Python 2.7,我有多种模式要检查。说hello和bye,但会更多,所以我选择使用re.compile()来存储它们,然后能够检查这个正则表达式: import re mypatt = re.compile(r'(hello|bye)', re.IGNORECASE) url = ["bye bye", "hello how are you", "i am fine", "ok byeee"] for u in url: if mypatt.search(u): print "yes
hello
和bye
,但会更多,所以我选择使用re.compile()
来存储它们,然后能够检查这个正则表达式:
import re
mypatt = re.compile(r'(hello|bye)', re.IGNORECASE)
url = ["bye bye", "hello how are you", "i am fine", "ok byeee"]
for u in url:
if mypatt.search(u):
print "yes --> %s" %(u)
运行此代码后,我得到了所需的输出:
yes --> bye bye
yes --> hello how are you
yes --> ok byeee
但是,由于存在多个模式,我希望每行编写一个模式,如下所示:
mypatt = re.compile(r'(\
hello|\
bye\
)', re.IGNORECASE)
然而,这不起作用,我不明白为什么。写这种语句的方法是什么,将每一个模式都写在不同的行中?您正在创建一个模式,在每一行的开头都包含空格。要避免这种情况,请执行以下操作之一:
你需要
re.VERBOSE
标志来忽略未替换的空白,我认为。@jornsharpe很好<代码>重新编译(r“”(…)“”,re.IGNORECASE | re.VERBOSE)成功了。如果您愿意,可以将其作为答案发布。使用“详细”标志甚至可以在每行输入评论。@非常有趣,谢谢。我在参考资料中找到了一个很好的例子。是的,参考资料在这里很有效。不过,我知道我把每一行都引用错了。