MySQL regexp没有检测到等号

时间:2015-12-12 13:59:50

标签: php mysql regex

我有一个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]

任何纠正这一点的帮助都是值得赞赏的,因为我的谷歌搜索技巧已经碰壁了。

1 个答案:

答案 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`;