正则如何匹配所有字符(含换行符)?
本帖最后由 顽固不化 于 2010-1-13 16:25 编辑有如下文件:
STR_CONFIG
A=A12
B=B24
C=CAB
END_CONFIG
只想取出:
A=A12
B=B24
C=CAB
不知用正则如何办理。盼正则高手教教俺 最好上传实际样本,因为上面的数据可能与实际数据相差甚远。还有很多细节不清楚,比如最后一行是否是空行,每行之间是否都是由CR和LF分隔的? 本帖最后由 kodin 于 2010-1-13 16:16 编辑
$array = StringRegExp($aRecords[$x], '(.=.*)', 3)
For $i = 0 To UBound($array) - 1
MsgBox(0, $i, $array[$i])
Next不知道这样行不行。刚试了下,能成功读取A=A12
B=B24
C=CAB 最好上传实际样本,因为上面的数据可能与实际数据相差甚远。还有很多细节不清楚,比如最后一行是否是空行, ...
pusofalse 发表于 2010-1-13 16:01 http://www.autoitx.com/images/common/back.gif
谢谢教导,就是一个文本文件。就是要读出str行和end之间的各行。 不知道这样行不行。刚试了下,能成功读取A=A12
B=B24
C=CAB
kodin 发表于 2010-1-13 16:15 http://www.autoitx.com/images/common/back.gif
感谢教导。我想一下子读出来。 最后是用的这样的特征串:"ConfigStart\r\n((?s).*)ConfigEnd" 呵呵,原来你的目标这么有规律,那象你的正则就可以了吧。。
我还想了好些,以为你要把一个非正规INI文件转为正规INI文件呢。。 :face (32):
"ConfigStart(.*?)ConfigEnd" 本帖最后由 afan 于 2010-1-13 20:34 编辑
回复 8# wwant
你这样肯定不行……StringRegExp($str, '(\(?s).+)END', 3)
;返回的0号元素或
StringRegExpReplace($str, '(?s).+(\.+)END.+', '\1')
;返回的字符串,这样应该可以 回复wwant
这样肯定不行……
'(\(?s).+)END' 这样应该可以
afan 发表于 2010-1-13 20:23 http://www.autoitx.com/images/common/back.gif
正则大师来啦哈,这个文本文件被copy /b 附在一个EXE后面,目的就是把他还原出来。这个文本文件在2进制文件里的标识就是str....end。 回复 10# 顽固不化
大师…… 新童鞋而已~~~ _ _||
前辈的代码足矣,咱学习还来不及呢~
页:
[1]