OSXエディターTextMateで作業しているMatlabプロジェクトがあります。特定の単語のすべてのインスタンスを見つける必要があります。たとえば、「foo」で、「。」が前に付かないものとします。または「/」で成功しました。
ただし、このように否定的に定義されている正規表現を検索する方法は見つかりません。「Aの前にB以外の何か」のようなものを検索できるかどうか誰もが知っていますか?
(TextMateはK. Kosakoによる鬼車正規表現ライブラリを使用しています。)
OSXエディターTextMateで作業しているMatlabプロジェクトがあります。特定の単語のすべてのインスタンスを見つける必要があります。たとえば、「foo」で、「。」が前に付かないものとします。または「/」で成功しました。
ただし、このように否定的に定義されている正規表現を検索する方法は見つかりません。「Aの前にB以外の何か」のようなものを検索できるかどうか誰もが知っていますか?
(TextMateはK. Kosakoによる鬼車正規表現ライブラリを使用しています。)
回答:
次の構文のビットを使用します。
(?=subexp) look-ahead
(?!subexp) negative look-ahead
(?<=subexp) look-behind
(?<!subexp) negative look-behind
あなたの場合、 (?<!\.)foo(?!/)
foo
、テキストの先頭または末尾にある単語の出現も考慮に入れた素晴らしいソリューションです。
角括弧内の^(サーカムフレックスまたはキャレット)は、式を否定します。そのため、「。」が前にない「foo」を見つけるには だろう:
[^.]foo
(^|[^.])(foo)
また、1つの余分な文字に一致する必要があります。