使用 Regex 匹配多个可能的值,除非忽略的值匹配
Using Regex to match on multiple possible values unless ignored values match
我正在尝试使用记事本++和正则表达式找到一种从我的日志文件中提取信息的更好方法,以便我可以查看任何关注的内容(查找 500 错误和 php 尝试等)。
目前我有以下内容;
^((?!bot.php)|(?!baidu)|(?!bingbot)|(?!facebookexternalhit)|(?!Curious+George)|(?!wpad.dat)).(php.$|select.$|/wp.$|wordpress.$|\s500\s.$|/Rejected.*$)
据我所知,它应该忽略具有第一个值的行(我想忽略的各种机器人和我不关心的代理尝试)
但它随后会匹配其他值(php、wordpress、500 个错误并被 urlscan 拒绝),但是当它在第二组上匹配时,它似乎无法忽略第一组中的值。
(在有人问我为什么要在服务器日志中寻找 PHP 之前,我是 运行 .net 上的一个 windows 服务器,所以任何 .PHP 要么是 headers 来自机器人,要么是黑客试图找到 non-existent 页)
在记事本++中试试这个表达式
(?-s)^(?=(?:.(?!baidu|bot\.php))*?$)(?=.*?(?:\.php|select\.|500)).*?$
其中 (?!baidu|bot\.php)
包含备用黑名单(您想忽略的行)
(?:\.php|select\.|500)
包含您要匹配的行的白名单。
只匹配白名单匹配的线路,不匹配黑名单的线路
例如仅匹配以下 4 行中的第 2 行和第 4 行:
/randomPage.htm randomBrowser 200
/access.php randomBrowser 200
/access.php baidu 200
/randomPage.htm randomBrowser 500
我正在尝试使用记事本++和正则表达式找到一种从我的日志文件中提取信息的更好方法,以便我可以查看任何关注的内容(查找 500 错误和 php 尝试等)。
目前我有以下内容;
^((?!bot.php)|(?!baidu)|(?!bingbot)|(?!facebookexternalhit)|(?!Curious+George)|(?!wpad.dat)).(php.$|select.$|/wp.$|wordpress.$|\s500\s.$|/Rejected.*$)
据我所知,它应该忽略具有第一个值的行(我想忽略的各种机器人和我不关心的代理尝试) 但它随后会匹配其他值(php、wordpress、500 个错误并被 urlscan 拒绝),但是当它在第二组上匹配时,它似乎无法忽略第一组中的值。
(在有人问我为什么要在服务器日志中寻找 PHP 之前,我是 运行 .net 上的一个 windows 服务器,所以任何 .PHP 要么是 headers 来自机器人,要么是黑客试图找到 non-existent 页)
在记事本++中试试这个表达式
(?-s)^(?=(?:.(?!baidu|bot\.php))*?$)(?=.*?(?:\.php|select\.|500)).*?$
其中 (?!baidu|bot\.php)
包含备用黑名单(您想忽略的行)
(?:\.php|select\.|500)
包含您要匹配的行的白名单。
只匹配白名单匹配的线路,不匹配黑名单的线路
例如仅匹配以下 4 行中的第 2 行和第 4 行:
/randomPage.htm randomBrowser 200
/access.php randomBrowser 200
/access.php baidu 200
/randomPage.htm randomBrowser 500