是否有Python等效于正则表达式的Perl"/ x"修饰符?

Pho*_*non 7 python regex perl

Perl 使用修饰符可以轻松构造可读的正则表达式/x.此修饰符允许编写正则表达式字符串并忽略这些字符串中的所有空格.换句话说,正则表达式的逻辑部分可以用空格或甚至回车分隔,从而提供了很好的可读性.在Python中,我看到这样做的唯一方法是构造这样的正则表达式字符串,在中间步骤中从中删除空格,然后使用生成的字符串进行匹配.有更优雅的方式吗?

Mar*_*ers 8

是的,通过设置re.X/ re.VERBOSEflag:

此标志允许您编写看起来更好的正则表达式.在该模式内的空白将被忽略,除非在字符类时或由反斜杠之后,并且,当一个行包含一个*?既不在字符类或由反斜杠之后,从这样的最左边的所有字符(?:通过的端部线被忽略.

这意味着匹配十进制数的两个正则表达式对象在功能上是相等的:

a = re.compile(r"""\d +  # the integral part
                   \.    # the decimal point
                   \d *  # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")
Run Code Online (Sandbox Code Playgroud)

这几乎与(?P<...>Perl标志完全一样.