求助,正则取字符串(以关键字开头的多行字符)[已解决]
本帖最后由 Huiseyu 于 2015-9-25 19:55 编辑正则实在是越搞越不懂...主要是不知道如何处理多行,求助帮忙啦...$str = _
'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&@CR _
&'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&@CR
MsgBox(8096 ,'源字符串' ,$str)取每个以StrStart开头的段落,已空行结束,就像这样的一段..先谢过了,要睡了....{:face (456):}StrStart 1 1 1 332 kk 99 dd lll 999 9s9s
ad333333 1 1 1 332 kk 99 dd lll 999 9s9s
opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s 符合条件的应该有两段吧
这里的分行符只有 @CR ,因此只有 \r(?<=^|\r)StrStart.+?\r\r 本帖最后由 Huiseyu 于 2015-9-25 11:47 编辑
符合条件的应该有两段吧
这里的分行符只有 @CR ,因此只有 \r
afan 发表于 2015-9-25 09:05 http://www.autoitx.com/images/common/back.gif嗯,是的,这个是个以文本格式记录的数据库。有很多很多的字符串,不止两段的啦
要把StrStart开头的,以空行结束的每一段 字符串整理出来到另外的地方刚才试了一下只取了已StrStrart所在的一行,'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s,两个\r的话又什么都没有了$str = _
'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&@CR _
&'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' &@CR _
&@CR
MsgBox(8096 ,'源字符串' ,$str)
$res = StringRegExp($str ,'(?<=^|\r)StrStart.+?\r' ,3)
#include'array.au3'
_ArrayDisplay($res) ;。可不可以把以StrStrart开头,空行结尾的一整段字符取出来。[保持段落的原格式]
请再帮忙看看,我要把多个数据库合成一个。拿到别处用,就是要提取这些关键配置不然重做的话要做瘫.... 回复 4# Huiseyu
3.3.6.1 我上面的表达式是可以取到两段的… 换了3.3.14.2版本,修改表达式,前面加个“(?s)”即可通用$str = _
'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& 'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& 'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& @CR _
& 'StrStart 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& 'ad333333 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& 'opeweowp 1 1 1 332 kk 99 dd lll 999 9s9s ' & @CR _
& @CR
MsgBox(8096, '源字符串', $str)
$res = StringRegExp($str, '(?s)(?<=^|\r)StrStart.+?\r\r', 3)
#include'array.au3'
_ArrayDisplay($res) 换了3.3.14.2版本,修改表达式,前面加个“(?s)”即可通用
afan 发表于 2015-9-25 19:10 http://www.autoitx.com/images/common/back.gif
谢谢A大,刚吃完饭就看到回复了。
我还有一个问题{:face (52):}
如何保持段落的换行格式 ,不把一段变成一长串的了 谢谢A大,刚吃完饭就看到回复了。
我还有一个问题
如何保持段落的换行格式 ,不把 ...
Huiseyu 发表于 2015-9-25 19:28 http://www.autoitx.com/images/common/back.gif
现在就是保存原始的换行格式啊,不是变成了一长串,而是本来就是一样的。你看到的一长串,用MsgBox看看就知道了 本帖最后由 Huiseyu 于 2015-9-25 19:56 编辑
现在就是保存原始的换行格式啊,不是变成了一长串,而是本来就是一样的。你看到的一长串,用MsgB ...
afan 发表于 2015-9-25 19:47 http://www.autoitx.com/images/common/back.gif
哇靠,太神奇了。。果然如此。我已经白的连msgbox都不会玩了。。。尴尬苦笑中
谢谢A大,帮了一个大忙....以后就方便啦..{:face (427):} 正则真的好强大,学习了
页:
[1]