2012年12月31日

EmEditor・検索の正規表現について修正版

 EmEditorについて、まとめはこちらLink

 以前書いた、EmEditorの検索で正規表現についてまとめた記事、
EmEditorでファイル名取得と正規表現

 あれからもう少しまとめたものを追加したので、新規で記載。

 文字の検索で、例えばファイル名の拡張子を検索したい場合、「最初に見つかった文字」「最後に見つかった文字」を取得する必要がある。
 正規表現でそれをする場合、次の表記が使える。

文字「a」を検索する場合、

.*?a :最初のaまで検索
[^a]* :最初のaまで検索
.*a :最後のaまで検索
(?<=a)x :先にaが存在するものを検索 → ○ax / ×bx
(?<!a)x :先にaが存在しないものを検索 → ×ax / ○bx
x(?=a) :後にaが存在するものを検索 → ○xa / ×xb
x(?!a) :後にaが存在しないものを検索 → ×xa / ○xb

「.*」だけだと「最後の文字」を検索するが、「?」を付けると「最初の文字」を検索するので、「[^a]」と同様の事ができる。つまり、
以下の文書を検索した場合:111a222a333a444a555

  • 行頭から最初のaまで → 111a222a333a444a555
    ^[^a]*a
    ^.*?a
  • 行頭から最後のaまで → 111a222a333a444a555
    ^.*a
  • 最初のaから行末まで → 111a222a333a444a555
    a.*$
  • 最後のaから行末まで → 111a222a333a444a555
    a[^a]*$
  • 行頭から最初のaの手前まで → 111a222a333a444a555
    ^[^a]*
    ^.*?(?=a)
  • 行頭から最後のaの手前まで → 111a222a333a444a555
    ^.*(?=a)
  • 最初のaの次から行末まで → 111a222a333a444a555
    (?<=a).*$
  • 最後のaの次から行末まで → 111a222a333a444a555
    [^a]*$
 これらの事が可能。
 また、「[^a]」で検索対象文字は1文字だが、「.*?」などを使うと単語も検索対象にできるので、用途に応じて使い分けるといい。




posted by 司隆 at 09:55 | Comment(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。