8

Python 提供了一个标志 (re.Xre.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
              )

我认为我没有真正看到使用后一种形式,但是(恕我直言)它使正则表达式更易于阅读(我不需要尝试找出哪些空白已被转义,以及什么空白正在忽略...等等),我的评论被我的文本编辑器格式化为评论。是否有理由更喜欢前者而不是后者或签证?或者这真的是番茄番茄问题吗?

4

2 回答 2

5

前者可以放在自己的文本文件中,然后加载而无需借助literal_eval. 对于复杂的 RE(或选择多个不同的 RE),这可能是一个好处。

于 2013-02-08T14:41:38.577 回答
3

我会说这是番茄番茄酱。“x”正则表达式标志不是 python 独有的,并且在连接操作更冗长的语言中可能更有意义(想象+到处都会增加噪音)。

我还考虑了这样一个事实,即它强制您正确地指出哪个空格是表达式的一部分,因为它消除了任何歧义,并且很难错过依赖于空格的正则表达式中的怪癖。

最后一个论点是,您可以将确切的模式复制到具有相同标志的另一种语言中,并且它可以毫不费力地工作。在后一种情况下,我必须删除很多rs 和撇号。


顺便说一句,您总是可以与选项re.X连接。

于 2013-02-08T14:44:51.410 回答