| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖, 1 人收藏
标题:关于正则表达式提取参数问题的疑问
只看楼主 加入收藏
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
收藏(1)
 问题点数:0 回复次数:4 
关于正则表达式提取参数问题的疑问
问题描述如下:

需要提取配置行中的部分数据,配置行例如:

2010-02-21 14:57:15  127.0.0.1 0.0.0.0 80 127.0.0.1 POST arg_post 30 log /index.asp

采用正则式“(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s+(.+)\s+(.+)\s+(.+)\s+(.+) \s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)”,经过RXTest.exe(正则表达式测试工具)测试可以达到预期目的,如下图所示:


图片附件: 游客没有浏览图片的权限,请 登录注册



在VB6中采用如下代码,却无法达到上述效果,请高手指点。

 
程序代码:
          Dim regEx As RegExp
          Dim Match As Match
          Dim Matches As MatchCollection
          Set regEx = New RegExp          '   Create   a   regular   expression.
          ' Set   pattern.
          regEx.Pattern = "(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)"
          regEx.IgnoreCase = True         '   Set   case   insensitivity.
          regEx.Global = True             '   Set   global   applicability.
          
          Set Matches = regEx.Execute("2010-02-21 14:56:13  127.0.0.1 0.0.0.0 80 127.0.0.1 POST arg_post 30 log /index.asp")
          If Matches.Count = 10 Then
             attacklist.ListItems.Add , , Matches.Item(0) '时间
             attacklist.ListItems.Add , , Matches.Item(1) '源IP
             attacklist.ListItems.Add , , Matches.Item(3) '目的端口
             attacklist.ListItems.Add , , Matches.Item(7) '规则ID
             attacklist.ListItems.Add , , Matches.Item(8) '处理方式
             attacklist.ListItems.Add , , Matches.Item(9) 'Url
          End If


附:在C++中采用std::tr1::regex_match我曾实现过类似的功能。




搜索更多相关主题的帖子: 疑问 正则表达式 参数 
2010-02-24 22:34
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
问题已解决,结贴了。正确代码如下:


程序代码:
          Dim regEx As RegExp
          Dim Match As Match
          Dim Matches As MatchCollection
          Set regEx = New RegExp          '   Create   a   regular   expression.
          ' Set   pattern.
          regEx.Pattern = "(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)"
          regEx.IgnoreCase = True         '   Set   case   insensitivity.
          regEx.Global = True             '   Set   global   applicability.
          
          Set Matches = regEx.Execute(linestr)
          If Matches.Count >= 1 Then
             Set Match = Matches(0)
             Dim itmX As ListItem
             Set itmX = attacklist.ListItems.Add(, , Match.SubMatches(0)) '时间
             itmX.SubItems(attacklist.ColumnHeaders(2).SubItemIndex) = Match.SubMatches(1) '源IP
             itmX.SubItems(attacklist.ColumnHeaders(3).SubItemIndex) = Match.SubMatches(3) '目的端口
             itmX.SubItems(attacklist.ColumnHeaders(4).SubItemIndex) = Match.SubMatches(7) '规则ID
             itmX.SubItems(attacklist.ColumnHeaders(5).SubItemIndex) = Match.SubMatches(8) '处理方式
             itmX.SubItems(attacklist.ColumnHeaders(6).SubItemIndex) = Match.SubMatches(9) 'Url
          End If


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2010-02-25 00:18
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 

感谢分享。
2010-02-25 01:37
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
收藏
得分:0 
顶一下~
2010-02-26 17:55
cntrbaby
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-28 15:08
快速回复:关于正则表达式提取参数问题的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018203 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved