[已解决]正则搜索字符串问题,'^'元字符使用问题。
本帖最后由 wzh880801 于 2010-11-7 22:38 编辑#include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'^\[.+]',3)
_ArrayDisplay($str)
1.ini内容如下
a=1
b=2
c=3
根据教程和书(正则表达式经典实例 Jan Goyuaerts)上说的,^ 表示的是匹配开头的.比如 ^the 匹配 theabc中的the,而不匹配abcthe中的the,就这个例子来说,返回的结果应该是
但是结果却是:
仅仅匹配了第一行的。
如果改为
#include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'\[.+]',3)
_ArrayDisplay($str)
结果是
这个结果不是想要的。我要的结果是ini的段头.
大侠们指点下~~~^ 到底是怎么个用法。。。 ^是默认是匹配“整个字符串”的开头,并非每行的开头,如果要匹配每行的开头,需加个(?m)(?m)^\[.+] 回复 2# afan
看来我现在看的书也被翻译错了,它上面说的是匹配每行,还给出了例子…… 这是我以前测试的方法,你看下^匹配字符串的开始的一个位置,同时也表示否的表达式,表示不想被匹配的字符,一般和[]一起使用。也匹配输入字符串的开始
MsgBox(0, "测试结果", StringRegExp("abcd1234", '^a'))
结果是1
MsgBox(0, "测试结果", StringRegExp("abcd1234", '^b'))
结果是0
为何是0呢,我们要看"abcd1234"开头是a而不是b,如果把"abcd1234"改"bcd1234",那结果就是1 回复 2# afan
(?m)为什么对$不起作用啊:
a=1
b=2
c=3
找其中的:
(?m)^.*?8]$ 本帖最后由 afan 于 2010-11-8 12:53 编辑
回复afan
(?m)为什么对$不起作用啊:
a=1
b=2
c=3
找其中的 ...
binghc 发表于 2010-11-8 12:48 http://www.autoitx.com/images/common/back.gif
因为$前面可能会有\r
(?m)^.*?8]\r?$ 回复 6# afan
原来这样,学习了 本帖最后由 lchl0588 于 2010-11-8 13:56 编辑
回复 5# binghc #include <array.au3>
$text = FileRead('1.ini')
$str = StringRegExp($text,'(?m)^\',3)
_ArrayDisplay($str)还有(?m)^\[.*8]
感觉^是这样用
页:
[1]