今更ですが、 Perl で正規表現によるマッチングを行いたくなったので。
経緯
今回は「対象文字列に http
または https
を含むか」を調べたいと考えました。
なお、改行は予め処理されていて全ての文字列が一行に収まっていると想定します。
コード
$heystack = "対象文字列です。この中に http://example.jp が含まれていると正規表現マッチングで引っかかります。"
if ($heystack =~ /https?:\/\//i) {
print "URLが含まれています。";
}
これでOK。
余談
malformed header from script. Bad header=syntax error at /PATH/TO/WEBSITE/: cgiwrap
途中でこのようなエラーがログに記録されてしまいました。
原因は elsif
を他の言語と同じノリで else if
と記述していたため構文エラーになっていました。
ぱっと見このエラー文だけでは分かりづらいですね……。
参考
正規表現
- 「=~」 – パターンマッチ演算子 – Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説
- Perlの正規表現の一行モード(/s)と複数行モード(/m)の覚え方 – Qiita
- 文字列の検索 | beginners CGI