🕌

ベタHTMLのURL抽出(正規表現)

2024/10/07に公開

ベタHTMLのテキストの置換処理とか、抽出をすることがあるときにいつも調べてたので、いい正規表現ないか考えた。

Rubyで書く

text = "<a href='https://example.com/1234#12345?q=example'>example</a>"
url_match = text.match(/href=(["'])(.+?)\1/)

結果

irb(main):004> url_match[0]
=> "href='https://example.com/1234#12345?q=example'"
irb(main):005> url_match[1]
=> "'"
irb(main):006> url_match[2]
=> "https://example.com/1234#12345?q=example"

大事なこととしてはtextがシングルコーテーションとダブルコーテーションがいれかわってもURL取得に影響がないこと。人によるHTML作成は好みがでる。

text = '<a href="https://example.com/1234#12345?q=example">example</a>'

もっといい表現ありそうな気がするけど現状のベスト

Discussion