找回密码
 加入
搜索
查看: 2449|回复: 10

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

  [复制链接]
发表于 2010-1-13 15:32:12 | 显示全部楼层 |阅读模式
本帖最后由 顽固不化 于 2010-1-13 16:25 编辑

有如下文件:
STR_CONFIG
[config]
A=A12
B=B24
C=CAB
END_CONFIG

只想取出:
[config]
A=A12
B=B24
C=CAB

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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-1-13 16:01:17 | 显示全部楼层
最好上传实际样本,因为上面的数据可能与实际数据相差甚远。还有很多细节不清楚,比如最后一行是否是空行,每行之间是否都是由CR和LF分隔的?
发表于 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


谢谢教导,就是一个文本文件。就是要读出str行和end之间的各行。
 楼主| 发表于 2010-1-13 16:23:48 | 显示全部楼层
不知道这样行不行。刚试了下,能成功读取A=A12
B=B24
C=CAB
kodin 发表于 2010-1-13 16:15


感谢教导。我想一下子读出来。
 楼主| 发表于 2010-1-13 16:25:04 | 显示全部楼层
最后是用的这样的特征串:"ConfigStart\r\n((?s).*)ConfigEnd"
发表于 2010-1-13 16:54:57 | 显示全部楼层
呵呵,原来你的目标这么有规律,那象你的正则就可以了吧。。

我还想了好些,以为你要把一个非正规INI文件转为正规INI文件呢。。
发表于 2010-1-13 20:22:36 | 显示全部楼层

"ConfigStart(.*?)ConfigEnd"
发表于 2010-1-13 20:23:23 | 显示全部楼层
本帖最后由 afan 于 2010-1-13 20:34 编辑

回复 8# wwant


    你这样肯定不行……
StringRegExp($str, '(\[config\](?s).+)END', 3)
;返回的0号元素或 
StringRegExpReplace($str, '(?s).+(\[config\].+)END.+', '\1')
;返回的字符串,这样应该可以
 楼主| 发表于 2010-1-13 20:31:08 | 显示全部楼层
回复  wwant


    这样肯定不行……

'(\[config\](?s).+)END' 这样应该可以
afan 发表于 2010-1-13 20:23



    正则大师来啦哈,这个文本文件被copy /b 附在一个EXE后面,目的就是把他还原出来。这个文本文件在2进制文件里的标识就是str....end。
发表于 2010-1-13 20:44:26 | 显示全部楼层
回复 10# 顽固不化


    大师…… 新童鞋而已~~~ _ _||
前辈的代码足矣,咱学习还来不及呢~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 08:49 , Processed in 0.075696 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表