1つの単語を含むすべての.javaファイルをすばやく検索しようとしていますが、別の単語がありません。私はMyEclipse 10.7とその 'Search |ファイル検索 '機能をサポートしています。regexは1つの単語を含むファイルを検索しますが、別の単語は含まない
正規表現はこのシナリオで使用できますか?正しい正規表現は何でしょうか?
TIA、 スティーブ
1つの単語を含むすべての.javaファイルをすばやく検索しようとしていますが、別の単語がありません。私はMyEclipse 10.7とその 'Search |ファイル検索 '機能をサポートしています。regexは1つの単語を含むファイルを検索しますが、別の単語は含まない
正規表現はこのシナリオで使用できますか?正しい正規表現は何でしょうか?
TIA、 スティーブ
唯一の解決策は、以下の正規表現です。
キーは\s\S
です。キーは各行ではなく、ファイル全体が確実に検索されます。
(?m)\A(?=.*REGEX_TO_FIND)(?!.*MISSING_REGEX.*).*\z
正規表現はちょっとトリッキー得ることができますが、それは二つに分解します。
私は、テキスト内の単語connectReadOnly
を見つけ、disconnect
を見つけるために失敗する方法を示す例HEREを持っています。テキストにはconnectReadOnly
が含まれているため、次の部分の検索が開始され、disconnect
が見つかりません。 disconnect
がテキスト内にあるので、文字列全体()に失敗し、ファイル全体がと一致する必要があります。 2番目の部分である否定部分(?!.*disconnect.*)
で遊んでいれば、必要な正規表現を設定することができます。私の例では、私のコードのどこにでもdisconnect
を見つけることは望んでいません:)あなたは簡単にそれを検索するためにあなたの言葉で置き換えることができます。
キーはマルチラインモードを使用します。これは、最初に(?m)
を使用して設定し、次に文字列の開始/終了を使用します。 ^
と$
を使用して行を開始/終了します。ここで、\A
と\z
は文字列を開始および終了し、ファイル全体に一致を拡張します。
編集:connectReadOnly
とdisconnect
質問の利用:(?m)\A(?=.*connectReadOnly)(?!.*disconnect.*).*\z
。更新された例はhereです。
これは近いようですが、多くの誤認(たとえば、両方の用語を含むファイル)が返されます。 * (?m)^(?= connectReadOnly)((?disconnect))* $ 私の目標は、 connectReadOnly 'はどの行にもありますが、「切断」という用語がありません。 – Fred
@SAL答えに変更が加えられました。試してみてください...それは今すぐ動作するはずです:) – Walls
それはどちらも動作しません。おそらく、Eclipseの正規表現パーサーがあなたが使っているものと違うのだろうか? 様々な情報源からのヒントをまとめた後、私が見つけたのは次のようなものです:^(?![\ s \ S] * disconnect)[\ s \ S] * connect。* $ – Fred
あなたが好きなものを使用することができます
(?<!.*bar)foo(?!.*bar)
「fooが」発見された場合に一致しますが「バー」はないだろう。
注意:ドットが通常の改行を除いて改行を除くため、複数の正規表現(EX:Notepad ++には "。matches newline"というオプションがあります)を使用するように検索エンジンを設定する必要があります。それは関係なく、ラインの、INCLUDED_TERM
を含むがMISSING_TERM
を欠いたすべてのファイルを見つけ
^(?!.[\s\S]*MISSING_TERM).[\s\S]*INCLUDED_TERM.*$
:私は仕事に見つけることができる
あなたは、単一の行でそれを検索する場合は、このようにそれを使用する:あなたはclass\.variable
のようにそれを必要とするかもしれない原因
^(?!.*MISSING_TERM).*INCLUDED_TERM.*$
また、エスケープ文字として\
を使用することができます。
実際、私はこれを別の質問で尋ねましたが、私は落雷のように下降しました。だから私はあなたの質問でこれに答えました。私はこの情報がstackoverflow上に維持する必要がありますと信じています。それ以外に、私はひどく傷ついています。 – leventunver
非常に良い答え(y)。ビバライブブロダ。 –
は魅力的です。 –