8

Pythonには、正規表現の注釈を付けるためのフラグ(re.Xまたは)が用意されています。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
              )

後者の形式が実際に使用されているのを見たことはないと思いますが、(IMHO)正規表現が読みやすくなります(どの空白がエスケープされ、どの空白が使用されているかを把握する必要はありません)無視されます...など)そして私のコメントは私のテキストエディタによってコメントとしてフォーマットされます。後者またはビザバースよりも前者を好む理由はありますか?それとも、これは本当にトマト-トマトの問題ですか?

4

2 に答える 2

5

前者は、独自のテキストファイルに入れて、に頼らずにロードできliteral_evalます。複雑なRE(または複数の異なるREの選択)では、それがメリットになる場合があります。

于 2013-02-08T14:41:38.577 に答える
3

トマトトマトだと思います。「x」正規表現フラグはPython専用ではなく、連結操作がより冗長な言語でより意味をなす場合があります(+どこでもノイズが増えることを想像してください)。

また、どの空白が表現の一部であるかを適切に示すことを強制するという事実は、あいまいさを取り除き、空白に依存するregexenの癖を見逃しにくくするためです。

最後の議論の1つは、正確なパターンを同じフラグを持つ別の言語にコピーでき、それほど労力をかけなくても機能するということです。後者の場合、多くのrsとアポストロフィを削除する必要があります。


ちなみに、あなたはいつでもオプションと連結することができますre.X

于 2013-02-08T14:44:51.410 に答える