Perlの正規表現を用いた置換
翻訳校正:村上雅章・野崎裕子
Perlの正規表現のなかでも特に有益であり、かつ多用される置換や変換について解説する。
前回の記事では、Perlのマッチ演算子を紹介し、正規表現を用いてテキスト中から特定パターンを見つけ出す方法について解説した。今回は、テキストの変更や置換、変換を行う正規表現演算子について解説している。
まず、正規表現の利用方法のうちで最も有益であり、かつ最もよく利用されている置換について解説したい。置換の最も簡単な形式は以下のようなものである。
$string =~ s/a/b/;
これによって$string中の最初の"a"が"b"で置き換えられる。すべての"a"を"b"で置き換えたい場合、以下のように、最後に"g"(グローバルを意味する)を追加するだけでよい。
$string =~ s/a/b/g;
マッチで使用できる特殊演算子は置換においてもすべて使用することができる。例えば、前回の記事で用いた電話番号の例において、数字以外のすべての文字を取り除くことによって、ユーザーの入力に関わる問題を減らしたいとしよう。その場合には、以下のようなコードを記述することができる。
$string =~ s/[^0-9]//g;
これによって、最初の式にマッチした文字すべて(すなわち数字以外のすべての文字)が2番目の式(すなわち空文字列)で置き換えられる。しかし、すべての母音を大文字にしたいからといって、以下のようなコードを記述することはできない。
$string =~ s/[aeiou]/[AEIOU]/g;
ブラケット記法では正規表現中の何番目の文字がマッチしたのかを知ることはできないため、2番目の式内ではどの文字で置換するかを指定できないのである。そもそも、2番目の式内では正規表現を使用することができないのだ。このコードでは実際には、各母音が"[AEIOU]"という文字列で置き換えられる。小文字で記述されているすべての母音をその大文字で置き換えるには別の方法、すなわち変換ツールを用いて以下のように記述することになる。
$string =~ tr/aeiou/AEIOU/;
変換は各文字ごとに行われる。すなわち、最初のリストの各項目が2番目のリストの同じ位置にある文字で置き換えられるわけだ。便利なことに、2番目のリストはラップアラウンドするようになっているため、以下のようなコードを記述することもできる。
$string =~ tr/[1-9]/ /;
- 2人の推薦記事
- 2人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
モジラ、「Firefox 3.6」の第1ベータ版をリリース
進むストレージ環境の見直し
―エン・ジャパン厳選求人☆毎週更新―
【最終警告】パンデミック対策特集
大丈夫?あなたの会社のセキュリティ対策
企業ITシステムの企画、構築、運用のイロハ
最大32個のセンサーが電力を徹底管理!
100万円で実現!中小企業の情報漏えい対策