🕌
ベタHTMLのURL抽出(正規表現)
ベタ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