0

私はPython2.7.3を使用しています。これは、「ファイル」に読み込まれたWebサイトを解析するためのコードです。

list = re.findall(r'<span info=".+</span>| \
          Name: .+<br>| \
          <span id="Phone" info="phonenumber">.+</span>| \
          ',file)

私の実際のコードは4行より長いですが、これで要点がわかります。これを別々の行に書き込もうとしているので、読み取り/デバッグが簡単ですが、現在のところ、リストには何も保存されていません。

最初のいくつかの式を1行に移動してみましたが、正常に機能します。私は何が間違っているのですか?

4

1 に答える 1

4

複数行の文字列を使用して、正規表現を冗長にします。

mylist = re.findall(r'''(?x)                    # verbose mode
                        <span\ info=".+</span>| # allows you to comment the regex
                        Name:\ .+<br>|          # for even better readability
                        <span\ id="Phone"\ info="phonenumber">.+</span>''', file)

ただし、冗長な正規表現では空白が無視されるため、スペースをエスケープする必要があります。

インデントによって導入された空白が正規表現の一部になったため、ソリューションは失敗しました(そして、それは冗長な正規表現ではなかったため、重要な空白です)。

于 2013-02-27T07:42:32.123 に答える