我有一个mysql数据库,我试图使用REGEXP找到一些网址。
但是,我的正则表达式似乎不起作用,就在等号上。
示例字段为:
POST /4jEFhi.php?p=o2k8q6j5dm9pau HTTP / 1.1 ~~主持人:example.com ~~ User-Agent:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 5.1; 三叉戟/ 4.0)
我的初始正则表达式如下:
^ POST /(?![a-z _] {6})[A-Za-z0-9 _] {6} .php \?[az] = [a-z0-9] {10,} < / p>
但是,在mysql workbench和/或phpmyadmin中,我遇到了同样的问题。
首先,这篇文章:
(?![A-Z _] {6})
在MySQL中不起作用,我收到以下错误:
错误代码:1139。从regexp
获得错误'重复 - 操作数操作数无效'如果我删除它,我似乎很好继续
^ POST / [A-Za-z0-9 _] {6} .php \?[a-z] = [a-z0-9] {10,}
然而,检测似乎停在=(等号)
这有效,但不是那么精确:
^ POST /(?![a-z _] {6})[A-Za-z0-9 _] {6} .php \?[a-z]
任何纠正这一点的帮助都是值得赞赏的,因为我的谷歌搜索技巧已经碰壁了。
答案 0 :(得分:0)
尝试:
SET @`URL` := 'POST /4jEFhi.php?p=o2k8q6j5dm9pau HTTP/1.1 ~~ Host: example.com ~~ User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)',
@`REGEXP` := '^POST /[A-Za-z0-9_]{6}\\.php\\?[a-z]\\=[a-z0-9]{10,}';
SELECT @`URL` REGEXP BINARY @`REGEXP`;