閉じたタグと、href を含む開いた/閉じていないタグの両方に一致する URL を抽出しようとしています。
つまり、正規表現は次のとおりです。
<(\w+)\s[^<>]*?href=[\'"]([\w$-_.+!*\'\(\),%\/:#=?~\[\]!&@;]*?)[\'"].*?>((.+?)</\1>)?
サンプルデータは次のとおりです。
<link href='http://blah.net/message/new/?stopemails.aspx?id=5A42FDF5' /><table><tr><td>
<a href='http://blah.net/message/new/'>Click here and submit your updated information </a> <br><br>Thanking you in advance for your attention to this matter.<br><br>
Regards, <br>
Debbi Hamilton
</td></tr><tr><td><br><br></td></tr></table>
そして、これをhttp://re-try.appspot.com/またはhttp://www.regexplanet.com/advanced/java/index.html (はい、Java 用であることはわかっています) に入れると、取得しようとしているものが正確に得られます。 : タグ、href テキスト、終了タグで囲まれたテキスト、および囲まれたテキスト自体。
つまり、これを Python アプリで使用すると、最後の 2 つのグループ (タグ付きで囲まれたテキスト、およびテキスト自体で囲まれた) は常にNone
. 後方参照を持つグループ内のグループと関係があると思われます: ((.+?))?
また、私は特に以下を使用していることに言及する必要があります。 matcher = re.compile(...) matcher.findall(データ)
ただし、グループはNone
と の両方に表示さmatcher.search(data)
れます。matcher.match(data)
どんな助けでも大歓迎です!