さわだのノート

書籍のお仕事に役立つかもしれない思いつきを記録しています。

RSS: 記事の更新情報 Rss Feed

正規表現使用時に利用できる特殊変数

Perl正規表現を使用する際、以下の4つの特殊変数が利用できます。

メタ文字 説明
$& 文字列の中でパターン全体がマッチした部分を参照
$` 文字列の中でマッチに先行する部分を参照
$' 文字列の中でマッチに続く部分を参照
$+ 最後にマッチした文字列を返す

正規表現を使用する際、検索文字列のなかでマッチする特定の文字列がほしい、でも元の文字列を壊したくないから置換は使えない、なんてシーンがありますよね。
そんなとき上記の変数を利用すると、元の文字列を壊すことなく任意の文字列が取得できます。

こんなかんじです。

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use feature qw/say switch/;

use open IO => qw/:utf8 :std/;

my $string = "午後の紅茶は150円で買える";

$string =~ m|\d{3}|;

say "コカコーラは$&円で買える";
# コカコーラは150円で買える

say $string;
# 午後の紅茶は150円で買える

Perlは特殊変数がたくさんあって覚えるのが大変です。
Pythonみたいに正規表現使うのもオブジェクト指向、なんて考えなくてもいいのは楽なんですが。