关于网页正则表达式取数据请教
本帖最后由 小小盘 于 2012-8-1 09:12 编辑想从论坛批量下载帖子需取" class="t_msgfont">和<br>之间的内容,用正则表达式:" class="t_msgfont">(?s)<br>,不能筛选出,请各位老师指教 (?s)(?<=" class="t_msgfont">).*?(?=<br>) 昨天上午试了一上午,谢谢老师帮忙, 回复 2# haijie1223
说实话,没看懂 ?<= 和 ?= 的用法。StringRegExp的帮助好像没有。
haijie1223 发表于 2012-8-1 09:42 http://www.autoitx.com/images/common/back.gif
.*的后面加个?请问是代表什么呢
.*?和.+有何不同呢 第N次看到正则表达式这个概念了,感觉很有用,但还是一头雾水,加油啊! 本帖最后由 xiehuahere 于 2012-8-1 16:16 编辑
回复 5# xiaowo
这个我知道,可以告诉你。
.*?
. 匹配任意单字符,默认不包括换行符。但这里前面加了(?s),. 就也可以匹配换行符了。因为考虑到" class="t_msgfont">和<br>之间的内容可能换行,所以这样做是很必要的。
* 重复前一个字符0次或多次。这里的前一个字符就是 . 所匹配的任意单字符。
? (在一个重复字符之后) 查询最小范围匹配代替最大范围。这就是帮助里的原话。意思是前面 .* 匹配的范围不包含前面的" class="t_msgfont">和后面的<br>,就是所谓的最小匹配,匹配出来的字串最短。
.+
就是重复前一个字符至少1次。这里的前一个字符就是 . 所匹配的任意单字符。
简单说,最主要的区别就是 * 和 + 的区别。
.* 匹配的东西可以为空(0次或多次,0次的时候就是空),.+匹配的内容一定非空(至少出现1次)。 回复 4# xiehuahere
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置 回复 5# xiaowo
a.*?b匹配最短的,以a开始,以b结束的字符串 回复 8# haijie1223
多谢!! 这样看起来很合理。
那个《正则表达式30分钟入门教程》里有,看来au3支持的正则绝不仅是帮助里说的那些。 回复 9# haijie1223
原来如此,受教了 回复xiaowo
这个我知道,可以告诉你。
.*?
. 匹配任意单字符,默认不包括换行符。但这里前面加 ...
xiehuahere 发表于 2012-8-1 16:07 http://www.autoitx.com/images/common/back.gif
我也看了《正则表达式30分钟入门教程》,里面没有提到(?s)和(?i)这些,请问这些是在哪里看到的 回复 12# xiaowo
这些在autoit帮助文件里有,看看 StringRegExp 函数的帮助说明。 回复xiaowo
这些在autoit帮助文件里有,看看 StringRegExp 函数的帮助说明。
xiehuahere 发表于 2012-8-1 16:22 http://www.autoitx.com/images/common/back.gif
看到了,谢谢,原来后面有部分中文的呀,我就看前面几个是E文的就没往下翻了……求翻译呀{:face (319):}
页:
[1]