|
发表于 2012-9-17 18:28:09
|
显示全部楼层
本帖最后由 netegg 于 2012-9-17 18:46 编辑
http://www.autoitx.com/thread-11801-1-2.html
不过需要自己修改下原型
[au3]
#include <file.au3>
#include <array.au3>
dim $aA = _filelisttoarray(@systemdir, '*.*')
$sA = _arraytostring($aA, @crlf)
$sA = _FileSRER2Line($sA, '.exe', '')
msgbox(0,0,$sA)
;==========================================================================================
; 说明: 按指定的关键字替换或删除文本行,可选择是否使用正则表达式,是否写新文件等。
; 语法: _FileSRER2Line('文件路径'[, '搜索字符'[, '替换'[, 匹配标志[, 正则标志[, 回车符[, 写入标志]]]]]])
; 参数: 可选参数:如'搜索字符'字符为空(默认)则删除所有空行。
; 可选参数:如'替换'字符为空(默认)则删除匹配行,且不会留下空行。
; 可选参数:匹配标志 = 1 :整行需完全匹配(默认);匹配标志 = 0 :行中只需包含关键字。
; 可选参数:使用正则标志 = 1 使用正则(默认),为 0 不使用正则,使用原始字符串匹配。
; 可选参数:回车符标志 = 1 仅识别有回车符的断行@CRLF(默认,速度快),为 0 只要有换行符@LF即识别为断行。
; 可选参数:写入标志 = '' 写入原文件(默认);不为空则写入指定文件;= 0 仅返回不写入。
; 注意: 本函数以行作为操作单位,即不管在一行中含有几处关键字均按一个替换单位操作。
; 返回值:返回替换后的字符串。替换次数保存在@extended宏中。
; 作者: Afan -- http://www.autoitx.com
;=====================================================================================start
Func _FileSRER2Line($sFile, $pattern = '', $replace = '', $flag = 1, $SRE = 1, $CR = 1, $Write = '')
Local $strqhz = '', $extended = 0, $sRER, $strZY, $CRF = ''
If $CR = 0 Then $CRF = '?'
If $pattern = '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, '\r' & $CRF & '\n(?=\r' & $CRF & '\n)|\r' & $CRF & '\n$', '')
Else
If $SRE = 0 Then
$strZY = '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)'
$pattern = StringRegExpReplace($pattern, $strZY, '\\$1')
$replace = StringRegExpReplace($replace, $strZY, '\\$1')
EndIf
If $flag = 0 Then $strqhz = '\V*'
Local $patternWZ = $strqhz & $pattern & $strqhz
$pattern = '(\r' & $CRF & '\n)' & $patternWZ & '(?=\r' & $CRF & '\n)|\r' & $CRF & '\n' & $patternWZ & '$'
If $replace <> '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '${1}' & $replace)
Else
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '')
EndIf
EndIf
$extended = $extended + @extended
$sRER = StringRegExpReplace($sRER, '^\r' & $CRF & '\n', '')
SetExtended($extended)
Return $sRER
EndFunc ;==>_FileSRER2Line[/au3] |
|