免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3830 | 回复: 6
打印 上一主题 下一主题

pcre 字符串匹配 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-11 11:01 |只看该作者 |倒序浏览
本帖最后由 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?

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


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

论坛徽章:
0
2 [报告]
发表于 2011-03-11 12:56 |只看该作者
需求描述的不够清楚啊
你是要判断是否匹配呢
还是要捕获一段字符串呢,如果是捕获请举个捕获结果的例子

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2011-03-11 13:39 |只看该作者
回复 1# 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=

论坛徽章:
0
4 [报告]
发表于 2011-03-11 14:09 |只看该作者
本帖最后由 FightForWin 于 2011-03-11 14:13 编辑
需求描述的不够清楚啊
你是要判断是否匹配呢
还是要捕获一段字符串呢,如果是捕获请举个捕获结果的例子
珞水的大叔 发表于 2011-03-11 12:56



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

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

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

论坛徽章:
0
5 [报告]
发表于 2011-03-11 14:17 |只看该作者
回复  FightForWin


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



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

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2011-03-11 14:21 |只看该作者
不好意思,一开始我字符串弄错了。
我现在改过来了,能再帮我看一下不?谢谢。
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=

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [报告]
发表于 2011-03-11 14:27 |只看该作者
你好,我是要判断是否匹配,比如有一个数据包,我要用正则表达式判断数据包是否包含 /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/"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP