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)
- ホワイトペーパー
- 話題のタグ
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
ZDNet Japan Green IT
DELLが掲げる「新・仮想化アセスメントサービス」
Techno Exchange
ZDNet Japan ホスティング特集