Perl:正規表現において // の代わりに || を使用する
技術ドキュメント目次 -> Perl -> 正規表現において // の代わりに || を使用する本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。
◆ 正規表現において // の代わりに || を使用する
正規表現による操作をPerlで行う際に、正規表現のパターンを // でくくりますが、
その // には違う文字列を使用することも可能です。
例えば次のようなコードがあった場合、
my $str = "Hello World!"; if ($str =~ /ello/) { print "match!!\n"; } $str =~ s/World/Japan/; print $str . "\n"; |
それを実行すると次のようになりますが、
$ perl test.pl match!! Hello Japan! $ |
同じ正規表現の処理を次のように、
// ではなくて || によって行うことも可能になります。
my $str = "Hello World!"; if ($str =~ m|ello|) { print "match!!\n"; } $str =~ s|World|Japan|; print $str . "\n"; |
なお、この際、
/ello/ の箇所が m|ello| となっていて、| の前に m があることにご注意ください。
正規表現でマッチするかを調べるときには基本的には mが必要なのですが、
// を使用するときは m が省略可能となっているため、
// 以外の文字で正規表現マッチを行うときには mが必要になっています。
◆ どんなときに便利か
例えば Perl の CGIの中で、/somedir/ を /otherdir/ に置換したいときなど、
/ を含む文字列を正規表現で扱う場合に、// でパターンを指定すると、
次のように \ でのエスケープを行う必要が出てちょっと見にくくなってしまいます。
s/\/somedir\//\/otherdir\// |
そのような場合には、||でパターンの指定を行い、
次のようにしたほうが視覚的に見やすくなり便利です。
s|/somedir/|/otherdir/| |
■ Perl についての他のドキュメント
- %SIGによるシグナルの制御
- CSV等区切り文字で連結されたデータを操作(joinとsplit)
- Digest::MD5
- Digest::SHA1
- localtime()やgmtime()をスカラーで評価
- 正規表現において // の代わりに || を使用する
- 正規表現における () と (?:) の違い
- 配列・連想配列を条件に基づいてソート(sort)
■ 他のグループのドキュメント
Apache / Linux / FreeBSD / OpenSSL / Perl / HTTPプロトコル / Jakarta Tomcat / Java / NetBSD / Oracle / PostgreSQL / UNIX の C言語 / UNIX のコマンド / Windows / bind / システム運用TIPS