找回密码
 加入
搜索
查看: 3044|回复: 7

[AU3基础] [已解决]正则搜索字符串问题,'^'元字符使用问题。

  [复制链接]
发表于 2010-11-7 22:25:19 | 显示全部楼层 |阅读模式
本帖最后由 wzh880801 于 2010-11-7 22:38 编辑
#include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'^\[.+]',3)
_ArrayDisplay($str)
1.ini内容如下
[1234]
a=1
[5678]
b=2
[9012]
c=3[000]
根据教程和书(正则表达式经典实例 Jan Goyuaerts)上说的,^ 表示的是匹配开头的.比如 ^the 匹配 theabc中的the,而不匹配abcthe中的the,就这个例子来说,返回的结果应该是

[1234]
[5678]
[9012]

但是结果却是:
[1234]

仅仅匹配了第一行的。

如果改为
#include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'\[.+]',3)
_ArrayDisplay($str)
结果是
[1234]
[5678]
[9012]
[000]


这个结果不是想要的。我要的结果是ini的段头.

大侠们指点下~~~  ^ 到底是怎么个用法。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

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

查看全部评分

发表于 2010-11-7 22:33:36 | 显示全部楼层
^是默认是匹配“整个字符串”的开头,并非每行的开头,如果要匹配每行的开头,需加个(?m)
(?m)^\[.+]

评分

参与人数 1金钱 +10 收起 理由
wzh880801 + 10 谢谢 afan 前辈指点。看来我是误解了。。。 ...

查看全部评分

 楼主| 发表于 2010-11-7 22:39:10 | 显示全部楼层
回复 2# afan
看来我现在看的书也被翻译错了,它上面说的是匹配每行,还给出了例子……
发表于 2010-11-8 07:23:16 | 显示全部楼层
这是我以前测试的方法,你看下
^  匹配字符串的开始的一个位置,同时也表示否的表达式,表示不想被匹配的字符,一般和[]一起使用。也匹配输入字符串的开始

MsgBox(0, "测试结果", StringRegExp("abcd1234", '^a')) 
结果是1 
MsgBox(0, "测试结果", StringRegExp("abcd1234", '^b')) 
结果是0
为何是0呢,我们要看"abcd1234"开头是a  而不是b,如果把"abcd1234"改"bcd1234",那结果就是1
发表于 2010-11-8 12:48:07 | 显示全部楼层
回复 2# afan


    (?m)为什么对$不起作用啊:
[1234]
a=1
[5678]
b=2
[9012]
c=3[000]
找其中的[5678]:
(?m)^.*?8]$
发表于 2010-11-8 12:52:17 | 显示全部楼层
本帖最后由 afan 于 2010-11-8 12:53 编辑
回复  afan


    (?m)为什么对$不起作用啊:
[1234]
a=1
[5678]
b=2
[9012]
c=3[000]
找其中的 ...
binghc 发表于 2010-11-8 12:48


因为$前面可能会有\r
(?m)^.*?8]\r?$
发表于 2010-11-8 13:13:08 | 显示全部楼层
回复 6# afan


    原来这样,学习了
发表于 2010-11-8 13:20:55 | 显示全部楼层
本帖最后由 lchl0588 于 2010-11-8 13:56 编辑

回复 5# binghc
#include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'(?m)^\[5.*]',3)
_ArrayDisplay($str)
还有(?m)^\[.*8]
感觉^是这样用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 02:20 , Processed in 0.104769 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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