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)
- ホワイトペーパー
- 企画特集
パンデミック対策特集
インターネット上の悪意を未然に防ぐには?
ロリポップ!がリニューアル
SOA、BPM、SaaS −今、企業に必要なこと
今注目の「サジェスト検索」−デモ掲載中
◆エン・ジャパン厳選求人☆毎週更新◆
集積度も性能も、業界最高水準のブレードPC
セキュリティ&ユーザ事例【SIer Club】
中小企業のセキュリティリスクとは?
そのストレージで仮想化に対応できますか?
ストレージメディア特設サイト開設
仮想環境を実現するソリューション特集
御社のログ活用しませんか!?
ESBでIT投資の無駄を劇的に解消する
【徹底対談】運用管理ツールの賢い使い方
- サーバー監視・運用のコストを削減するには
- エンタープライズにおけるSUSEの強み
- サービス・ドリヴン・データセンター
- ■ストレージ容量50%削減保証■
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――