2017-03-02 21 views
0

現在、ファイル内のすべてのパスワードを見つける正規表現を構築しています。現在の正規表現は次のとおりです。正規表現の前に空白の先読みを使用する必要があります

(?:pass)(?:word)?(?:[\ ]{0,1})(?:[:=;,]{1})(?:[\ ]{0,1})(?!function)(.[^\s]*) 

問題は、私は、オプションの空白の後に「機能」を含む行をしたくないです。

password = potato123! found, is ok 
$dbpass=train123; = found, is ok 
pass:function($pass); = not found, is ok 
$dbpassword= function('dontfindme'); = found, should not be found 

は、アクションでそれを参照してください。 https://regex101.com/r/zT1kI3/35

ありがとうございました!

ギヨーム

+0

これはPCREのパターンですか?先読みが失敗すると、問題は '(?:[\] {0,1})'に戻ることになります。 –

+0

PCREパターンは何かわかりませんが、PowerGrepソフトウェアを使用して使用する予定です。ご協力ありがとうございました ! –

答えて

0

が最も簡単な解決策はfunctionのチェックの一部であることを、オプションの空白を探しを移動することです:

(?:pass)(?:word)?(?:[\ ]{0,1})(?:[:=;,]{1})(?![\ ]{0,1}function)(.[^\s]*) 

Updated regex101

+0

ありがとうございました!それは魅力的なように機能しますが、否定的なルックアヘッドの一部である場合、なぜ他の行がまだ空白で動作しているのか説明してください。 –

+0

これらのインスタンスのスペースの後に 'function'がないためです。この解決法は、 'function 'であるパスワードも見つけられないことに注意してください。 –

+0

代わりに "function("の代わりにフィルタリングすることで軽減しました。ありがとう! –

0

はあなたの他のサンプルには、この正規表現に一致してい?

(?:pass|password)\s*[:=;,]\s*(?!\s{0,}function)(\S*) 

デモ:(regex101の使用によって示されるように)https://regex101.com/r/PXWw6j/1

+0

はい、動作します! –

+0

@GuillaumeCaillé – MohaMad

関連する問題