Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编译每行一个模式的正则表达式_Python_Regex_Python 2.7 - Fatal编程技术网

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)成功了。如果您愿意,可以将其作为答案发布。使用“详细”标志甚至可以在每行输入评论。@非常有趣,谢谢。我在参考资料中找到了一个很好的例子。是的,参考资料在这里很有效。不过,我知道我把每一行都引用错了。