Perlの哲学 - Perlに対する誤解を解く

Perlは正規表現が言語に組み込まれている

Perlはプログラミング言語に正規表現が組み込まれています。このため、頻繁に出てくる文字列処理を、短く高速に書くことができます。

パターンマッチにおける正規表現の構文

文字列処理では、このパターンの文字が、文字列に含まれているかを確認したいということが頻繁にあります。Perlであれば、正規表現が言語に組み込まれているので、パターンマッチの構文を使って、正規表現を書くことができます。

# 正規表現のパターンマッチの構文
if ($str =~ /正規表現/) {

}

繰り返しのパターンマッチ

正規表現が言語に組み込まれているので、構文解析において、正規表現の構文も解析されます。パターンマッチの繰り返しを簡単に書く構文が存在します。

while ($str =~ /(正規表現)/g) {
  my $match = $1;
}

while文と正規表現のgオプションを組み合わせることで、繰り返しのパターンマッチを簡単に書くことができます。内部実装としては、繰り返しのタイミングで、文字列の開始位置を保存しておく変数が存在しています。

置換における正規表現の構文

Perlは、置換における正規表現の構文が存在します。Perlは、sedの構文を採用しました。Linuxコマンドのsedを使う感覚で、短い構文で、文字列の置換を行うことができます。

# 正規表現の置換の構文
$str =~ s/正規表現/置換後の文字列/;

日本語を正規表現で正しく扱えますか?

はい、日本語を正規表現で正しく扱えます。日本語を正しく扱うには、以下の記事を参考にしてください。

Encodeモジュール - 日本語などのマルチバイト文字列を適切に処理する

デコードされた文字列に変換することで、日本語を正規表現で正しく扱うことができます。

正規表現が組み込まれているプログラミング言語は他にありますか

正規表現が組み込まれているプログラミング言語は、Perlの他には、Rubyがあります。Rubyは、Perlの正規表現の文法を採用しています。

# Rubyのパターンマッチの構文
文字列 =~ /正規表現/

多くの言語は、ライブラリとして正規表現を提供しています。