【请教】正则表达式搜索行开头及关键字的写法
本帖最后由 不是小灵通 于 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
...
另外我还想获取该行后面的上传速度值,以及文件大小值,谢谢指导! #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)) 回复 2# afan
谢谢。我按您的代码再去试下,不行再来麻烦 回复 2# afan
非常感谢,完美解决问题
正则代码再来慢慢消化学习 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) 速率获取:#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) 回复 6# haijie1223
谢谢,您的两个方法也很简洁,效果也很好
今天跟大家学了不少! 学习了感谢分享 留下脚印,学习学习
页:
[1]