找回密码
 加入
搜索
查看: 3350|回复: 3

[AU3基础] [已解决]请A版及各位正则表达式高手看看这程序错在哪里了?

[复制链接]
发表于 2012-10-31 12:59:09 | 显示全部楼层 |阅读模式
本帖最后由 sleep365 于 2012-11-10 11:45 编辑

想处理一个时间及IP文件,总是有问题卡在正则表达式上面,好象和prel的不兼容,时间没能提出来。
#Include <File.au3>
#Include <Array.au3>
Dim $Qstime,$Qetime,$Tmptime,$Tmpip
Local $ipArray, $Var
$ipfile=@ScriptDir&"\ip.txt"

If Not _FileReadToArray($ipfile, $ipArray) Then
        MsgBox(4096, "错误", "你要操作的文件并不存在:" + $ipfile)
        Exit
EndIf
;_ArrayDisplay($ipArray);显示要查的IP参数

For $i=1 To UBound($ipArray)-1

        $Tmptime = StringRegExp($ipArray[$i],"([12]\d{3}-[01]?\d-[0-5]\d\h[0-2]?\d:[0-5]\d(?::[0-5]\d)?",1)
        $Tmpip   = StringRegExp($ipArray[$i],"([\d+.]+)",1)        
        ConsoleWrite($i&'--'&$ipArray[$i]&'---下标大小:'&UBound($Tmptime)&"/"&$Tmptime[0]&$Tmpip[0]&@CRLF)
Next
文件:
附件不知道能不能显示,以下是文件内容
221.235.69.239        2010-3-8  9:56:32
119.147.12.191        2010-3-16  09:40
59.172.110.160        2010-3-15  11:28
59.173.240.82        2010-3-15  16:13
59.172.108.90        2010-3-11  16:12
119.98.160.201        2010-3-13  17:12
221.235.69.239        2012-3-16  19:40
119.147.12.191        2010-3-16  09:40
219.140.172.210        2010-3-12  09:26
59.172.110.160        2010-3-15  11:25
59.172.126.131        2010-3-18  01:00
59.174.75.97        2010-3-14  11:49
59.172.108.123        2010-3-18  08:36
219.140.14.253        2010-3-13  02:12
58.48.154.192        2010-3-13  18:06
59.174.215.127        2010-3-12  01:47
111.172.236.198        2010-3-22  23:55
58.49.103.165        2010-3-22  16:37
59.174.73.177        2010-3-21  08:26
111.172.95.81        2010-3-5  02:15
58.49.241.186        2010-3-13  14:37
59.174.21.8        2010-3-19  11:26
58.48.66.28        2010-3-23  21:43
58.49.209.199        2009-2-2  13:44
58.49.229.30        2009-2-25  22:16
221.232.138.14        2009-2-11  16:17
61.183.68.55        2009-2-25  09:30
58.49.178.103        2009-2-24  09:24
59.173.220.89        2009-2-23  08:33
59.172.125.34        2009-2-24  17:40
219.140.69.20        2009-2-23  17:20
59.173.20.82        2009-2-25  19:56
192.96.135.199        2009-2-25  17:30

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-10-31 15:12:56 | 显示全部楼层
$Tmptime = StringRegExp($str,"([12]\d{3}-[01]?\d-[0-5]?\d\s*[0-2]?\d:[0-5]\d(?::[0-5]\d)?)",1)
OR
$Tmptime = StringRegExp($str,"((?:19|20)\d\d-(?:0?[1-9]|1[012])-(?:0?[0-9]|[12][0-9]|3[01])\s+(?:0?[0-9]|1[0-9]|2[0-3])\:(?:[0-5][0-9])(?:\:[0-5][0-9])?)",1)

评分

参与人数 1金钱 +10 收起 理由
sleep365 + 10 正则表达式写的好。

查看全部评分

发表于 2012-10-31 15:43:10 | 显示全部楼层
回复 1# sleep365


    不明白你什么意思,乱搞了一下提出时间的

### 友情提示:本脚本由 Au3.REHelper 于 2012/10/31 15:32 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = _
                '221.235.69.239        2010-3-8  9:56:32' & @CRLF & _
                '119.147.12.191        2010-3-16  09:40' & @CRLF & _
                '59.172.110.160        2010-3-15  11:28' & @CRLF & _
                '59.173.240.82        2010-3-15  16:13' & @CRLF & _
                '59.172.108.90        2010-3-11  16:12' & @CRLF & _
                '119.98.160.201        2010-3-13  17:12' & @CRLF & _
                '221.235.69.239        2012-3-16  19:40' & @CRLF & _
                '119.147.12.191        2010-3-16  09:40' & @CRLF & _
                '219.140.172.210        2010-3-12  09:26' & @CRLF & _
                '59.172.110.160        2010-3-15  11:25' & @CRLF & _
                '59.172.126.131        2010-3-18  01:00' & @CRLF & _
                '59.174.75.97        2010-3-14  11:49' & @CRLF & _
                '59.172.108.123        2010-3-18  08:36' & @CRLF & _
                '219.140.14.253        2010-3-13  02:12' & @CRLF & _
                '58.48.154.192        2010-3-13  18:06' & @CRLF & _
                '59.174.215.127        2010-3-12  01:47' & @CRLF & _
                '111.172.236.198        2010-3-22  23:55' & @CRLF & _
                '58.49.103.165        2010-3-22  16:37' & @CRLF & _
                '59.174.73.177        2010-3-21  08:26' & @CRLF & _
                '111.172.95.81        2010-3-5  02:15' & @CRLF & _
                '58.49.241.186        2010-3-13  14:37' & @CRLF & _
                '59.174.21.8        2010-3-19  11:26' & @CRLF & _
                '58.48.66.28        2010-3-23  21:43' & @CRLF & _
                '58.49.209.199        2009-2-2  13:44' & @CRLF & _
                '58.49.229.30        2009-2-25  22:16' & @CRLF & _
                '221.232.138.14        2009-2-11  16:17' & @CRLF & _
                '61.183.68.55        2009-2-25  09:30' & @CRLF & _
                '58.49.178.103        2009-2-24  09:24' & @CRLF & _
                '59.173.220.89        2009-2-23  08:33' & @CRLF & _
                '59.172.125.34        2009-2-24  17:40' & @CRLF & _
                '219.140.69.20        2009-2-23  17:20' & @CRLF & _
                '59.173.20.82        2009-2-25  19:56' & @CRLF & _
                '192.96.135.199        2009-2-25  17:30'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '\d{4}-\d{1,2}-\d{1,2}  \d{1,2}:\d{1,2}', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))

如果理解错了,望见谅~~

评分

参与人数 1金钱 +10 收起 理由
sleep365 + 10 解决问题了。

查看全部评分

 楼主| 发表于 2012-10-31 16:51:41 | 显示全部楼层
研究了一下午发现还是时间的正则表达式有问题,改成下面的就好了。谢谢annybaby 和seeyou 的热心回复!
$Tmptime = StringRegExp($Var,'[12]\d{3}-[01]?\d-[0-3]?\d\h+[0-2]?\d:[0-5]\d(?::[0-5]\d)?',2)

评分

参与人数 1金钱 +15 收起 理由
seeyou + 15 加油!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:23 , Processed in 0.111483 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表