株式会社エスロジカル
株式会社エスロジカル
セキュリティ、Web開発、Unix開発、Go言語

■ Perl:正規表現において // の代わりに || を使用する

技術ドキュメント目次 -> Perl -> 正規表現において // の代わりに || を使用する

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。


サイフにやさしいSSL証明書
【低価格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 についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。