URLを表す正規表現の優秀さ比較(ChatGPT無料版)

まず前提として、「優秀さ」の評価基準を定めないと点数は恣意的になります。

ここでは URL抽出用途 を想定し、以下の100点満点で評価します。

評価項目 配点
実際のURLを取りこぼしにくい 40
URL以外を誤って含みにくい 30
保守性・可読性 15
Onigmo依存性の少なさ 15

総合順位

順位 正規表現 得点
1 (https?://[^\s<>"']+) 92
2 (https?://[^\s<>"')]+) 88
3 (https?://[\w/:%#\$&\?\(\)~\.=\+\-]+) 74
4 (https?://[a-zA-Z0-9_\-\./%?&=#~@\+]+) 71

Onigmo 6.2.0限定での私の評価

もし用途が

「テキストからURLを抽出する」

であるなら、

(https?://[^\s<>"']+)

を100点基準とした場合、

正規表現 相対評価
(https?://[^\s<>"']+) 100
(https?://[^\s<>"')]+) 96
(https?://[\w/:%#\$&\?\(\)~\.=\+\-]+) 80
(https?://[a-zA-Z0-9_\-\./%?&=#~@\+]+) 77

という評価になります。

特に Gemini案は「安全に見えるが、実URLの取りこぼしが意外と多い」 ため、URL抽出用途では既存2より少し下に評価します。逆に 「URLらしい文字列だけを厳しく拾いたい」 という用途なら Gemini案の方が高評価になります。