顽固不化 发表于 2010-1-13 15:32:12

正则如何匹配所有字符(含换行符)?

本帖最后由 顽固不化 于 2010-1-13 16:25 编辑

有如下文件:
STR_CONFIG

A=A12
B=B24
C=CAB
END_CONFIG

只想取出:

A=A12
B=B24
C=CAB

不知用正则如何办理。盼正则高手教教俺

pusofalse 发表于 2010-1-13 16:01:17

最好上传实际样本,因为上面的数据可能与实际数据相差甚远。还有很多细节不清楚,比如最后一行是否是空行,每行之间是否都是由CR和LF分隔的?

kodin 发表于 2010-1-13 16:15:17

本帖最后由 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

顽固不化 发表于 2010-1-13 16:22:29

最好上传实际样本,因为上面的数据可能与实际数据相差甚远。还有很多细节不清楚,比如最后一行是否是空行, ...
pusofalse 发表于 2010-1-13 16:01 http://www.autoitx.com/images/common/back.gif

谢谢教导,就是一个文本文件。就是要读出str行和end之间的各行。

顽固不化 发表于 2010-1-13 16:23:48

不知道这样行不行。刚试了下,能成功读取A=A12
B=B24
C=CAB
kodin 发表于 2010-1-13 16:15 http://www.autoitx.com/images/common/back.gif

感谢教导。我想一下子读出来。

顽固不化 发表于 2010-1-13 16:25:04

最后是用的这样的特征串:"ConfigStart\r\n((?s).*)ConfigEnd"

llztt 发表于 2010-1-13 16:54:57

呵呵,原来你的目标这么有规律,那象你的正则就可以了吧。。

我还想了好些,以为你要把一个非正规INI文件转为正规INI文件呢。。

wwant 发表于 2010-1-13 20:22:36

:face (32):
"ConfigStart(.*?)ConfigEnd"

afan 发表于 2010-1-13 20:23:23

本帖最后由 afan 于 2010-1-13 20:34 编辑

回复 8# wwant


    你这样肯定不行……StringRegExp($str, '(\(?s).+)END', 3)
;返回的0号元素或
StringRegExpReplace($str, '(?s).+(\.+)END.+', '\1')
;返回的字符串,这样应该可以

顽固不化 发表于 2010-1-13 20:31:08

回复wwant


    这样肯定不行……

'(\(?s).+)END' 这样应该可以
afan 发表于 2010-1-13 20:23 http://www.autoitx.com/images/common/back.gif


    正则大师来啦哈,这个文本文件被copy /b 附在一个EXE后面,目的就是把他还原出来。这个文本文件在2进制文件里的标识就是str....end。

afan 发表于 2010-1-13 20:44:26

回复 10# 顽固不化


    大师…… 新童鞋而已~~~ _ _||
前辈的代码足矣,咱学习还来不及呢~
页: [1]
查看完整版本: 正则如何匹配所有字符(含换行符)?