Python提供了一个标志(re.X
or re.VERBOSE
)以允许注释正则表达式:
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
但是,使用自动字符串连接,您可以实现基本相同的事情:
a = re.compile(r'\d+' # integral part
r'\.' # decimal point
r'\d*' # optional fractional digits
)
我认为我没有真正看到后一种形式使用,但(恕我直言)它使得更容易阅读正则表达式(我不需要试图弄清楚哪些空白被转义,以及什么空格被忽略......等等。)我的评论由我的文本编辑器格式化为评论。是否有理由更喜欢前者而不是后者或签证?或者这真的是番茄 - 番茄问题吗?
答案 0 :(得分:4)
前者可以放在自己的文本文件中,然后加载而不用literal_eval
。对于复杂的RE(或多个不同RE的选择),这可能是一个好处。
答案 1 :(得分:3)
我会说这是番茄酱。 “x”正则表达式标志不是python独有的,并且在串联操作更冗长的语言中可能更有意义(想象+
到处添加噪声)。
我还考虑这样一个事实:它强制你正确地指出哪个空格是表达式的一部分是积极的东西,因为它消除了任何歧义,并且很难错过regexen中依赖于空格的怪癖。
最后一个论点是,你可以将确切的模式复制到另一种具有相同标志的语言,并且它可以毫不费力地工作。在后一种情况下,我必须删除大量的r
和撇号。
顺便说一句,您总是可以将与 re.X
选项连接起来。