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)
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
―エン・ジャパン厳選求人☆毎週更新―
【最終警告】パンデミック対策特集
電力に"ふた"をする独自の省エネ機能とは!?
100万円で実現!中小企業の情報漏えい対策
大丈夫?あなたの会社のセキュリティ対策
高まるiSCSIストレージへの注目度
企業ITシステムの企画、構築、運用のイロハ