txt格式问题?一个正则问题求助(已解决)
本帖最后由 papapa314 于 2011-7-7 19:08 编辑各位好,我将3.txt(见附件)的文本复制到afan的正则测试助手里可以获得如下结果
但是很奇怪的是,我用如下代码,却得不到同样的结果
#include<array.au3>
$text=FileRead(@ScriptDir&"\3.txt")
$contents=StringRegExp($text,'(?s)(.+?)"\r',3)
_ArrayDisplay($contents)
结果为
请问这个是不是txt格式的问题,应该如何解决这个问题呢?
多谢各位。
校园网上论坛极为痛苦,尤其是发帖,搞了十几分钟没发好,各位请见谅。 本帖最后由 pcbar 于 2011-7-7 08:27 编辑
不太明白楼主要做什么 ,是提取文字标题就这样
#include<array.au3>
$text=FileRead(@ScriptDir&"\3.txt")
$text=StringReplace($text,"<BR>","")
$contents=StringRegExp($text,'\[[^\[]+',3)
_ArrayDisplay($contents) 楼主的意思是以换行符为分隔符分割文本吗? 回复 3# pcbar
谢谢pcbar老大。我的目的是要把"\r和"\r之间的文本提取出来,用afan的正则测试工具可以看到提取出4项结果,但用arraydisplay却只看到1项结果。后来仔细看了下,发现如果文本开头有\r的项arraydisplay无法显示出来,但用一个循环可以照常提取。问题就出在这里了。 回复 3# pcbar
我是用如下代码提取文档内容以及文件名,效果是不错的,但就是效率比较低,速度很慢,特别是3.txt文件很大的时候,不知道有改进的办法没有? 谢谢pcbar老大。
$contents=StringRegExp(FileRead(@ScriptDir&"\3.txt"),'(?s)(.+?)"\r',3)
$num=UBound($contents)
$dir=@ScriptDir&"\"&@HOUR&"时"&@MIN&"分提取"
DirCreate($dir)
For $i=0 To $num-1
TrayTip("提示","共有"&$num&"个文档等待提取,目前正在提取第"&$i&"个",5)
$title=StringRegExp($contents[$i],"(.+?)\|",3)
FileWrite($dir&"\"&$title&".txt",$contents[$i])
_ReplaceStringInFile(@ScriptDir&"\"&$dir&"\"&$title&".txt","<BR>",@CRLF)
Next
TrayTip("提示","提取完毕,文档保存程序目录下"&$dir&"文件夹中",50) 回复 6# papapa314
;$contents = StringRegExp(FileRead(@ScriptDir & "\3.txt"), '(?s)(.+?)"\r', 3)
$contents=StringSplit(FileRead(@ScriptDir & "\3.txt"),'"'&@CRLF,3)
$num = UBound($contents)
$dir = @ScriptDir & "\" & @HOUR & "时" & @MIN & "分提取"
DirCreate($dir)
For $i = 0 To $num - 1
TrayTip("提示", "共有" & $num & "个文档等待提取,目前正在提取第" & $i & "个", 5)
$title = StringRegExp($contents[$i], "(?m)^.*?(?=\|)", 3)
FileWrite($dir & "\" & $title & ".txt", StringReplace($contents[$i],"<BR>",@CRLF))
;_ReplaceStringInFile(@ScriptDir & "\" & $dir & "\" & $title & ".txt", "<BR>", @CRLF)
Next
TrayTip("提示", "提取完毕,文档保存程序目录下" & $dir & "文件夹中", 50)
顶楼上
标记 回复 7# 3mile
呵呵,多谢向阳坊大哥,原来速度最慢的一步是 _ReplaceStringInFile(@ScriptDir & "\" & $dir & "\" & $title & ".txt", "<BR>", @CRLF),应该在写入txt文件之前前直接替换掉<BR>.
其他的StringRegExp跟stringreplace执行起来速度差别不是太大。
页:
[1]