2017-03-02 69 views
0

我目前正在建立一個正則表達式來查找文件中的所有密碼。目前正則表達式是:需要幫助正則表達式可選空白前的負面lookahead

(?: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模式(通過使用regex101的指示)?一旦前瞻失敗,問題是回溯到'(?:[\] {0,1})。 –

+0

不知道什麼是PCRE模式,但我打算使用它使用PowerGrep軟件。感謝您的幫助 ! –

回答

0

最簡單的辦法是將外觀的可選空白成爲function檢查的一部分:

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

Updated regex101

+0

謝謝!它的工作原理就像是一種魅力,但是如果它是否定的負面看法的一部分,你能解釋爲什麼其他行仍然在使用空格嗎? –

+0

因爲這些實例中的空間後面沒有'function'。請注意,該解決方案不會找到任何碰巧是「功能」的密碼。 –

+0

通過過濾「功能(」代替)來緩解它。謝謝! –

0

這是否正則表達式匹配到其他樣本?

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

演示:https://regex101.com/r/PXWw6j/1

+0

是的,它確實有用! –

+0

感謝您的關注@GuillaumeCaillé – MohaMad