'akira22' 取り扱い説明書

[正規表現]

'akira22' では、文字列の検索や置き換えでは正規表現が利用できるようになっていますし、GREP でも正規表現を使います。

正規表現とはいったい何なのでしょうか?

そこで、正規表現について、例を交えながら説明していきます。いったん正規表現を覚えるとこんな便利なものがあったのかと思うようになるはずです。

ただ、利用される エディタによって多少方言があります。'akira22' の表現こそが標準語だと胸をはって説明します。(方言はあっても基本的な考え方はいずれも同じですのでご安心くださいね!)

探しものはなんですか

実は、これも、りっぱな正規表現です。これを正規表現された検索文字列として検索すれば、当然のように、この文字列に完全に一致した文字列が検索されます。

しかし、もし、探し物は、数値 ( 0−9の数字の羅列)だとしたら、いったどうやって、検索すればいいのでしょうか?桁数を制限しない限りありとあらゆる数字列の表現があるはずです。しかし、正規表現すれば、これは、簡単に表現できるのです。

 [0-9]+

ただ、これだけです!なんだか馬鹿にされたようですが、実際に検索していただければ、すべての数字文字列が検索できることがお分かりになると思います。

上の正規表現をバラバラにしてみると、 09 と、なんだかわけのわからない、 [-]+ に分解できます。このわけけのわからない文字こそが正規表現の脳みそなのです!

 [] でくくられたものは、そのうちの任意の文字を意味しています。又 - は範囲を意味しています。つまり [0-9] は 0 から 9 の数字のいずれか一文字を意味している訳です。

 + は、直前のパターンの1回以上の繰り返しを意味します。さー、これで、だんだん、お分かりだと思いますが、 [0-9]+ は 0 から 9 の数字の一回以上の繰り返しを意味しているわけです。これこそが、数値のなのです。

これで、正規表現の便利さと、感覚をつかめていただけたと思いますので、正規表現で使用される、特殊文字を羅列してみます。

任意の一文字を表現する場合

.これは、英文字、漢字を問わず、ありとあらゆる1文字に一致します。

キャラクタクラス

 [] これは、 [ と ] で挟まれた中に表現される、一文字のうちいずれかを意味しています。 [ABC] は A,B,C のいずれかと一致しますし、 [0-9] は、 0 から 9 の数値一文字のいずれかに一致します。

キャラクタクラス以外


 [ ^ ] これは、 [ ^と ] で挟まれた中に表現される、一文字のうちいずれか以外を意味しています。 [^ABC] は A,B,C 以外の文字と一致しますし、 [ ^ 0-9]は、 0 から 9 の数値以外の文字を意味する事になります。

範囲

 - は範囲を意味します。 0-9 は 0 から 9 まで , あ - んはひらがなのすべての文字に一致します。

繰り返しと " ? "

 "*" は直前のパターンのゼロ回以上の繰り返しを意味します。 + は直前のパターンの1回以上の繰り返しを意味します。 ? は直前のパターンがゼロ回又は1回現れる事わ意味しています。

?の使用例として、もし文章のなかに月曜日ですという表現と月曜ですという表現が混ざって書かれているとすれば、月曜日 ? ですで検索すると、月曜ですと月曜日ですに一致します。

*と + の場合は、 AB*C で検索すると、 AC,ABC,AB(n 個の B)C に一致しますが
もし AB+C と表現すると、 AB には一致せずに、 ABC,AB(n 個の B)C に一致しま
す。

パターンの論理和

 | はAまたはB、黒又は白のような論理和を表現するときに利用されます。

例えば、 ( 日本国 )|( 日本人 ) で検索すれば、日本国と日本人に一致します。

位置を表わす ^ と $

 ^ は行頭を意味しています。ただし行の数えかたは改行文字を元に計算されていますので、、画面上の一行とは一致しません。

 $ は、行の数え方に関係なく、改行コードに一致します。

パターンのグループ化

 () でパターんをグループ化すると、まず () でくくられた部分が評価され次に全体が評価されます。又パターンのグループ化は特別なで置き換えを行う場合にも利用されます。置き換えについては後述します。

例えば今日は ( 晴れ | 雨 ) ですで検索すれば、今日は晴れですと今日は雨です
に一致します。

正規表現と置き換え

正規表現の場合も通常の置き換えと同じように検索された文字列をそのまま単純に置き換える事もできますが。正規表現をグループ化しておけば、もっと便利な置き換えができます。

置き換え文字列のなかでは特別な表現として、 \0,\1.. が利用できます。 \0 はパターン全体を意味し、 \1 から \9 はグループ化されたパターンを左から順番に数えたグループの番号を意味します。

例えば、検索パターンとして、 (AKIRA) を設定し、置き換え条件として、 \0\0\0 を指定すれば、 AKIRA は AKIRAAKIRAAKIRA に置き換わります。次の例として ( 私 ) と ( あなた ) を検索条件にし、置き換え条件として \2\1 を指定すれば、私とあなたという文字列はあなたと私に置き換えられます。

戻る