前回の記事で、メタ文字で囲んだ文字列の"いずれかのひとつ"を意味し、何文字あろうとマッチ対象として扱われる「[](ブラケット)」を紹介しましたが、一部訂正致します。ブラケット内で使用できるメタ文字は限られており、「^(キャレット)」「$(ドルマーク)」はブラケット外でお使いください。

マッチしない文字列を対象とする

さて、前回の記事では、「在る」「有る」両方にマッチさせるため、「[在有]」と表記しましたが、逆にマッチしない文字列を選択する場合は先ほど訂正させて頂いたメタ文字を使います。「月光」「月夜」「月足」という文字列がある状態で「[夜光]$」と検索すると、前者ふたつがマッチ対象となり、キャレットで囲んだ「夜」「光」を持たない「月足」は含まれません。

正規表現

検索:[夜光]$

Target

月光
月夜
月足

Search Result

月光
月夜

また、検索対象としてマッチしない文字列をキャレットで囲うこともできます。先と同じ文字列がある状態で「月[^夜光]」と検索すれば、マッチするのは「夜」「光」を持たず、「月」が前にある文字列「月足」のみとなります。ここでポイントとなるのは、キャレットの位置。否定を意味するキャレットは「[(左ブラケット)」の直後に入れなければなりません。たとえば「月[夜^光]」と検索しても、キャレットは単純な文字列として扱われるため、「月^」もマッチ対象に含まれてしまいます。

正規表現

検索:月[^夜光]

Target

月光
月夜
月足

Search Result

月足