|
秀丸エディタでは、「検索」「置換」「grep」などで正規表現を使用することができます。正規表現を使用するとDOSのワイルドカードのような検索はもとより,非常に複雑な条件で検索することができます。
秀丸エディタでの正規表現は、外部のDLL(プログラム)によって実現されています。
サイトー企画で独自に作成した「HmJre.dll」と山田和夫氏の「JRE32.DLL」が付属しています。
その他の正規表現DLLも秀丸エディタで設定することで使用可能です。
「HmJre.dll」は、Unicodeにも対応しています。
タグつき正規表現による置換機能
タグ付き正規表現による置換とは、検索でヒットした文字列の中からタグによって指定した部分を取り出して、その文字列を置換先の文字列の一部として利用する置換の方法です。
例えば、「AさんはBさんの友達です」というような文章を、「BさんはAさんの友達です」のように変換したい場合、従来はマクロでも使わないと自動で処理することはできませんでした。しかし、タグ付き正規表現による置換を使えば、一発で変換することができます。
先ほどの例の場合だと、
検索文字列: (.+)さんは(.+)さんの友達です
置換文字列: \2さんは\1さんの友達です
とすることで、「A」と「B」に相当する部分の入れ替えができます。
検索文字列で、()で囲われた部分が、順番に \1,\2… として置換文字列で表現可能です。
括弧によるタグ付き正規表現は、HmJre.dllを使っている場合にのみ利用可能ですが、従来のJRE32.DLLや他のDLLを使っている場合にも、秀丸エディタ独自の方式でタグを使うこともできます。この場合は、検索文字列を\fで区切って、置換文字列では\0,\1,\2…という順番が使用できます。
検索文字列: .+\fさんは\f.+\fさんの友達です
置換文字列: \2さんは\0さんの友達です
強化されている HmJre.dll
HmJre.dll は、JRE32.DLL の上位互換を維持しつつ正規表現をより高度に拡張しています。
- 繰り返し指定その1(固定回数)
特定の正規表現パターンをn回繰り返す場合には、{n}を使います。nの部分には数値が入ります。例えばabcを3回繰り返すには、(abc){3}と記述します。
数字を5回繰り返すには、[0-9]{5}と書きます。
- 繰り返し指定その2(n回以上)
特定の正規表現パターンがn回以上出てくることにマッチさせるには、{n,}を使います。nの部分には数値が入ります。例えばabcが3回以上繰り返すには、(abc){3,}と記述します。
- 繰り返し指定その3(n回以上、m回以下)
特定の正規表現パターンがn回以上m回以下出てくることにマッチさせるには、{n,m}を使います。nおよびmの部分には数値が入ります。
- 後方一致指定
特定の正規表現パターンの後に、さらに特定の正規表現パターンが続くことを指定しつつ、正規表現にヒットする文字列としては前方部分のみとするような指定が出来ます。
例えば、「abcxyz」という文字列を検索しつつ、ヒットする文字としては「abc」だけにしたいようなケースに使います。普通の検索では必要ありませんが、強調表示や置換の時に使うと便利です。
例えば「abc」の後に「xyz」が続きつつ、ヒットする文字列は「abc」だけにしたい場合は、abc(?=xyz)と指定します。
- 後方不一致指定
後方一致指定とは反対に、後方部分が特定のパターンにヒットしないことを必要とします。例えば「abc」の後ろが「xyz」でない場合に「abc」のみにヒットさせたいようなケースで使います。
上記例では、abc(?!xyz)と指定します。
- 前方一致指定
特定の正規表現パターンの前に、さらに特定の正規表現パターンが存在していることを指定しつつ、正規表現にヒットする文字列としては後方部分のみとするような指定が出来ます。
例えば、「abcxyz」という文字列を検索しつつ、ヒットする文字としては「xyz」だけにしたいようなケースに使います。普通の検索では必要ありませんが、強調表示や置換の時に使うと便利です。
例えば「abc」の後に「xyz」が続きつつ、ヒットする文字列は「xyz」だけにしたい場合は、(?<=abc)xyzと指定します。
- 前方不一致指定
前方一致指定とは反対に、前方部分が特定のパターンにヒットしないことを必要とします。例えば「xyz」の前が「abc」でない場合に「xyz」のみにヒットさせたいようなケースで使います。
上記例では、(?<!abc)xyzと指定します。
- ものぐさ(non-greedy)指定
「*」、「+」、「?」、「{n,m}」のような繰り返し指定は、原則として、もっとも長い文字列にマッチさせるように動作します。例えば「a*」の指定が"a"の文字が連続している文字列にヒットするとき、"a"の全体にヒットします。
ものぐさ指定をした場合は、逆に、もっとも短い文字列にヒットしようとします。
『ページのトップへ』
|
|