字符串处理问题
本帖最后由 bbip 于 2009-5-19 21:56 编辑我想从如下文本中提取所有的共享名和资源,该用什么函数进行处理呢? 我试了很多 都失败了...
求高手帮忙谢谢啦
共享名 资源 注释
-------------------------------------------------------------------------------
IPC$ 远程 IPC
bak D:\bak
image D:\image
命令成功完成。 你可以使用StringSplit()这个函数来,以空格做间隔,一行一行读出来做处理就能得到了。 中间有很多空格 而且空格数量也不固定,用空格分割不太理想啊 而且 如果文本内容发生了变化程序就要重写。太麻烦了还有更好的方法吗? 高手还没出现........... #include "array.au3"
$t = getpath(@ScriptDir & '\tmp.txt')
_ArrayDisplay($t)
Func getpath($file)
if not FileExists($file) Then
Return
SetError(1)
EndIf
Local $array
$f = FileOpen($file, 0)
While 1
$chars = FileReadLine($f)
If @error = -1 Then ExitLoop
;TrayTip("", $chars, 2)
$path = StringRegExp(StringStripWS($chars,2), ':(\\[^/:\*\?<>\\|]+)*', 2)
if IsArray($path) Then
_ArrayAdd($array, StringStripWS(StringRegExpReplace($chars, ':(\\[^/:\*\?<>\\|]+)*', ''), 3) & ',' & $path)
EndIf
Wend
_ArrayDelete($array,0)
FileClose($f)
Return $array
EndFunc ;==>getpath 强大的正规则 谢谢 pcbar 高手就是高手正则表达式确实够强大可惜看不懂 正则表达式强大 7# bbip
:(\\[^/:\*\?<>\\|]+)*
注释一下:
:英文字母(大写或小写)后面紧跟一个冒号
(\\[^/:\*\?<>\\|]+)括号里面的内容为一组,类似数学表达式中的括号,\\表示"\",前一个\为转义符,后面的\\与此相同,[^/:\*\?<>\\|]+除了/:\*\?<>\|的字符重复1次或更多次
*括号中的内容重复0次或更多次
其实就是匹配一个合法的文件夹表达式 学习周星星老师了~~~ 谢谢pcbar 总算对表达式有所了解了 收下,学习。。
页:
[1]