不是小灵通 发表于 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],【就是这里不会写了】)=1 Then
...

另外我还想获取该行后面的上传速度值,以及文件大小值,谢谢指导!

afan 发表于 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


    非常感谢,完美解决问题
正则代码再来慢慢消化学习

haijie1223 发表于 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)

haijie1223 发表于 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

学习了感谢分享

gz982503@163.co 发表于 2016-12-10 12:47:20

留下脚印,学习学习
页: [1]
查看完整版本: 【请教】正则表达式搜索行开头及关键字的写法