<a>
タグ内の URL リンクに一致するようにインターネットから取得した正規表現があります。以下のように表示されます。
variable = re.compile('<a\s(?:.*?\s)*?href=[\'"](.*?)[\'"].*?>')
<a>
このパターンがタグの内容とどのように正確に一致するのか、誰か説明してくれませんか?
Unix での正規表現の基本的な理解はしていますが、これは私には複雑すぎるように見えます。説明してくれる人に感謝します。
'<a\s(?:.*?\s)*?href=[\'"](.*?)[\'"].*?>'
それを分解しましょう。
<a
まさに、タグの始まりです。\s
空白を意味します。(?:.*?\s)*?
可能な限り繰り返されるか、まったく繰り返されない非キャプチャ グループを意味します。このグループの内容は次の.*?
とおりです。href=
は、タグの一部です。[\'"]
またはのいずれ'
かを意味します"
(.*?)
は、何でもキャプチャするキャプチャ グループです。[\'"]
またはのいずれ'
かを意味します"
.*?
何でも、または何も>
それだけ、タグの終わり。これは英語で何という?
<a ANYTHING href=URL>
ANYTHING は無視され、URL がキャプチャされます。
細部:
'
URL は、またはのいずれかの引用符で囲まれています"
(したがって、正規表現に含まれています)。<a> ... </a>
または<a ... >
href=
は必要な属性で、リンク アドレスです。@Inbar ローズはすでにあなたの質問に詳細に答えていますが、リンクを取得するために正規表現を使用すると問題が発生するリンクがいくつかあるかもしれません.通常の分割関数を使用してそれらを取得できる場合は、一般的なhtml構文を考慮してください -
a='<a href="http://www.google.com">'r
print a.split('href=')[1].split('"')[1]
>> http://www.google.com