找回密码
 加入
搜索
查看: 3598|回复: 8

[AU3基础] 【请教】正则表达式搜索行开头及关键字的写法

  [复制链接]
发表于 2015-12-18 10:39:27 | 显示全部楼层 |阅读模式
本帖最后由 不是小灵通 于 2015-12-18 10:46 编辑

在编一个搜索FTP_LOG的简单程序,用来查找某些对管理员感兴趣的字符。但是我正则表达式不太熟悉,尝试多次失败...

【要求】搜索数组中的某值,以某些字符串开头,中间包含键盘输入的查询字,中间字符长度不等,可能包括大小写,中文,数字,冒号,反斜杠等等
如:
----------------------------------------------------------------------------------------------------------------------
Received file d:\work\☆文件夹名\文件夹2名\这里是从键盘输入的敏感字等等.txt successfully (0 Bytes/sec - 0 Bytes)
----------------------------------------------------------------------------------------------------------------------
【程序片段】
...
$inputmsg=InputBox("第三阶段:搜索","请输入需要查找的关键字"& @CRLF & "(说明:西文区分大小写)","")
If StringRegExp($linedata[$i][5],【就是这里不会写了】)=1 Then
...

另外我还想获取该行后面的上传速度值,以及文件大小值,谢谢指导!
发表于 2015-12-18 11:12:26 | 显示全部楼层
#include <Array.au3>
Local $sSource = 'Received file d:\work\☆文件夹名\文件夹2名\这里是从键盘输入AbC的敏感字等等.txt successfully (10 Bytes/sec - 1024 Bytes)'
;~MsgBox(0, '源字符串', $sSource)
Local $sKey = InputBox("第三阶段:搜索","请输入需要查找的关键字"& @CRLF & "(说明:西文区分大小写)", '敏感')
If @Error Then Exit
Local $sEscape = '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)'
Local $aSRE = StringRegExp($sSource, '(?mi)^\h*Received.+?(\w:.+?(?-i)' & StringRegExpReplace($sKey, $sEscape, '\\$1') & '.*?\.(?i)txt)\h+successfully\h+\((\d+)\h+Bytes/sec\h+\-\h+(\d+)\h+Bytes\)(?=\v|$)', 3)
If @Error Then Exit MsgBox(48, $sKey, '无匹配')
_ArrayDisplay($aSRE, UBound($aSRE))
 楼主| 发表于 2015-12-18 11:14:11 | 显示全部楼层
回复 2# afan


    谢谢。我按您的代码再去试下,不行再来麻烦
 楼主| 发表于 2015-12-18 11:20:33 | 显示全部楼层
回复 2# afan


    非常感谢,完美解决问题
正则代码再来慢慢消化学习
发表于 2015-12-18 11:28:17 | 显示全部楼层
A版速度真快~我没看明白撸主的意思,是不是这样?
#include <array.au3>
Dim $str = "Received file d:\work\☆文件夹名\文件夹2名\这里是从键盘输入的敏感字等等.txt successfully (0 Bytes/sec - 0 Bytes)"
Dim $arr = StringRegExp($str, "\\([^\\]*)\.txt", 3)
_ArrayDisplay($arr)
发表于 2015-12-18 11:33:50 | 显示全部楼层
速率获取:
#include <array.au3>
Dim $str = "Received file d:\work\☆文件夹名\文件夹2名\这里是从键盘输入的敏感字等等.txt successfully (0 Bytes/sec - 0 Bytes)"
Dim $arr = StringRegExp($str, "\((\d+\sBytes/sec)\s\-\s(\d+\sBytes)\)", 3)
_ArrayDisplay($arr)
 楼主| 发表于 2015-12-18 11:41:26 | 显示全部楼层
回复 6# haijie1223


    谢谢,您的两个方法也很简洁,效果也很好
今天跟大家学了不少!
发表于 2015-12-18 15:31:38 | 显示全部楼层
学习了  感谢分享
发表于 2016-12-10 12:47:20 | 显示全部楼层
留下脚印,学习学习
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-26 00:11 , Processed in 0.084874 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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