使用正则表达式匹配多个可能的值,除非忽略的值与

时间:2015-11-26 15:15:48

标签: regex iis logging notepad++

我试图找到一种更好的方法,使用notepad ++和regex从我的日志文件中提取信息,这样我就可以查看任何有关的内容(寻找500个错误和php尝试等)。

目前我已经得到了以下内容;

  

^((?!bot.php)|?!(百度)|?!(bingbot)|?!(facebookexternalhit)|?!(+好奇的乔治)|?!(WPAD.DAT))。(PHP $ |。选择 $ |。/ WP $ |。wordpress的 $ | \ S500 \ S $ |。/拒绝* $)

根据我的理解,它应该忽略具有第一个值的行(我想忽略的各种机器人和我不关心的代理尝试) 但是为了它然后匹配其他值(php,wordpress,500错误和urlscan拒绝),但是当它在第二组上匹配时,似乎无法忽略第一组中的值。

(在任何人问我为什么要在服务器日志中查找PHP之前,请注意,我在.net上运行Windows服务器,因此任何.PHP都是来自机器人的标头或黑客尝试查找非 - 现有页面)

1 个答案:

答案 0 :(得分:1)

在notepad ++

中试试这个表达式

(?-s)^(?=(?:.(?!baidu|bot\.php))*?$)(?=.*?(?:\.php|select\.|500)).*?$

其中(?!baidu|bot\.php)包含一个替代黑名单(您要忽略的行) 并且(?:\.php|select\.|500)包含您要匹配的行的白名单。

它只匹配白名单中匹配的行,但也与黑名单不匹配。

e.g。仅匹配以下4行中的第2行和第4行:

/randomPage.htm randomBrowser 200 
/access.php randomBrowser 200 
/access.php baidu 200 
/randomPage.htm randomBrowser 500