+ -
当前位置:首页 → 问答吧 → pcre 字符串匹配

pcre 字符串匹配

时间:2011-03-11

来源:互联网

本帖最后由 FightForWin 于 2011-03-11 14:13 编辑

大家好:我要在字符串中匹配
/abc? eev=
这两个串。
源串可能的形式为
GET  /abc?eev=http://txt?

GET  /abc?xx=yy&eev=htp://txt?

其实就是除了要匹配 /abc? 外还要匹配 eev=
其中eev前面要么没有其他字符,如GET  /abc?eev=http://txt?
要么是取地址符,如GET  /abc?xx=yy&eev=htp://txt?

请教大家,怎么写正则表达式,谢谢。


编辑原因:一开始把字符串弄错了,不好意思。

作者: FightForWin   发布时间: 2011-03-11

需求描述的不够清楚啊
你是要判断是否匹配呢
还是要捕获一段字符串呢,如果是捕获请举个捕获结果的例子

作者: 珞水的大叔   发布时间: 2011-03-11

回复 FightForWin


    试试:
echo "GET  /abc?eev=http://txt?
GET  /mcf.php?xx=yy&eev=htp://txt?"  |grep -P -o '\/(.*)\?(.*)?eev='
/abc?eev=
/mcf.php?xx=yy&eev=

作者: yinyuemi   发布时间: 2011-03-11

本帖最后由 FightForWin 于 2011-03-11 14:13 编辑


QUOTE:
需求描述的不够清楚啊
你是要判断是否匹配呢
还是要捕获一段字符串呢,如果是捕获请举个捕获结果的例子
珞水的大叔 发表于 2011-03-11 12:56




    你好,我是要判断是否匹配,比如有一个数据包,我要用正则表达式判断数据包是否包含 /abc? eev= 字符串。(/abc?与eev=可相邻或不相邻,不相邻时eev前面只能为 &)
如果数据包内容为
GET  /abc?eev=http://txt?

GET  /abc?xx=yy&eev=htp://txt?&aa=bb
则匹配上了。

用一条正则表达式能做到不?

作者: FightForWin   发布时间: 2011-03-11



QUOTE:
回复  FightForWin


    试试:
echo "GET  /abc?eev=http://txt?
GET  /mcf.php?xx=yy&eev=htp://t ...
yinyuemi 发表于 2011-03-11 13:39




    不好意思,一开始我字符串弄错了。
我现在改过来了,能再帮我看一下不?谢谢。

作者: FightForWin   发布时间: 2011-03-11



QUOTE:
不好意思,一开始我字符串弄错了。
我现在改过来了,能再帮我看一下不?谢谢。
FightForWin 发表于 2011-03-11 14:17




echo "GET  /abc?eev=http://txt?
GET  /abc?xx=yy&eev=htp://txt? "|grep -P -o '\/abc?(.*&?)?eev='
/abc?eev=
/abc?xx=yy&eev=

作者: yinyuemi   发布时间: 2011-03-11



QUOTE:
你好,我是要判断是否匹配,比如有一个数据包,我要用正则表达式判断数据包是否包含 /abc? eev=  ...
FightForWin 发表于 2011-03-11 14:09




echo -e "GET  /abc?eev=http://txt?\nGET  /abc?xx=yy&eev=htp://txt?&aa=bb" | grep -P "abc\?(.*&)?eev"   

echo -e "GET  /abc?eev=http://txt?\nGET  /abc?xx=yy&eev=htp://txt?&aa=bb" | perl -lane "print if /abc\?(.*&)?eev/"

作者: jason680   发布时间: 2011-03-11