読者です 読者をやめる 読者になる 読者になる

正規表現にURLを書く際の.の扱い

ruby neta

URLの正規表現を使う際に.を毎回エスケープするのはめんどくさそうだなと思ってふと思いついたのが、

%r{#{"http://\w+.g.hatena.ne.jp".gsub('.', '\.')}

とか。もちろん正規表現の.は使えなくなるし普通にやるより遅いはず。

正規表現の.もちゃんと使えるようにするとこんな感じか。

%r{ #{'http://\.*.g.hatena.ne.jp'.gsub('.', '\.').gsub('\\\.', '.')} }x

正規表現の.を使いたいやつだけ明示的に.をエスケープして使う感じで。逆にややこしくしてるだけな気も…(汗

Perl正規表現のオプションにそんなのあったかもという気がしてRuby正規表現のオプション調べてみたけど、ないようなのでこうするしかなさそうです。

シングルクオートとダブルクオートの\の扱いの違いとかいろいろとややこしいのでめんどくさくても素直にエスケープした方が良いと思いました。