我有多种模式需要检查。说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)
然而,这不起作用,我无法理解为什么。编写这样的语句的方法是什么,将每个模式写在不同的行中?
答案 0 :(得分:3)
您正在创建一个模式,其中包含每行开头的空格。为避免这种情况,请:
使用textwrap.dedent
,删除多行字符串中每行的公共前导空格;或
添加re.VERBOSE
(or re.X
)标志以忽略未转义的空格,并允许添加内联注释。