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

[AU3基础] 关于正则请教一下[已解决]

  [复制链接]
发表于 2011-3-22 13:27:39 | 显示全部楼层 |阅读模式
本帖最后由 m765555 于 2011-5-11 09:42 编辑

$array= StringRegExp($sHTML, "<(?i)strong class=fs_14>(.*?)</(?i)strong>",1) 中
的正则"<(?i)strong class=fs_14>(.*?)</(?i)strong>"不明白到底是什么意思,对正则不明白,请各位兄弟指点一下,给解释一下这句话正则是什么意思?特别是strong什么意思?
发表于 2011-3-22 13:41:50 | 显示全部楼层
回复 1# m765555
这个正则有问题吧.
strong class中间有空格?不是用/h或/s来表示吗?
(?i)不区分大小写
如果是"<(?i)strong\hclass=fs_14>(.*?)</(?i)strong>"这样写倒可以理解为匹配"<strong class=fs_14>这里是要匹配的内容</strong>".
 楼主| 发表于 2011-3-22 13:48:00 | 显示全部楼层
代码是正确的呀,有空格的

#include <IE.au3>
Filedelete ("Tq.txt")
$Url="http://www.soso.com/tb.q"
$oIE = _IECreate ($url, 0, 0)
$sHTML = _IEBodyReadHTML ($oIE)
$array= StringRegExp($sHTML, "<(?i)strong class=fs_14>(.*?)</(?i)strong>",1)
for $i = 0 to UBound($array) - 1
$tqtemp = $array[$i]
Next
$tqtoday = StringReplace($tqtemp, " ", " ")
msgbox (32,"天气",$tqtoday)
_IEQuit ($oIE)
 楼主| 发表于 2011-3-22 13:49:27 | 显示全部楼层
还是没有搞懂这句代码的意思,没明白,呵呵,兄弟可否详细点
 楼主| 发表于 2011-3-22 13:50:19 | 显示全部楼层
"<(?i)strong class=fs_14>(.*?)</(?i)strong>"
求解,急
 楼主| 发表于 2011-3-22 13:58:01 | 显示全部楼层
查看了一下源网站的源代码是这样的<strong class="fs_14">小雨,8℃</strong>
有些不明白了,fs_14是有引号括起来的,可是正则这样写怎么也能匹配呢?
"<(?i)strong class=fs_14>(.*?)</(?i)strong>"
发表于 2011-3-22 14:05:23 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-3-22 14:08 编辑

回复 6# m765555

"<(?i)strong class=fs_14>(.*?)</(?i)strong>"

匹配最短的,以<(?i)strong class=fs_14>开始,以</(?i)strong>结束的字符串.
(?i) = 不区分大小写.

如果字符是<strong class="fs_14">小雨,8℃</strong>
上面的正则是匹配不了.
发表于 2011-3-22 14:18:11 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-3-22 14:19 编辑

回复 6# m765555

我看了那个网址的源代码,是<strong class="fs_14">小雨,8℃</strong>.

但你看一下用你的代码获取的源代码
$Url="http://www.soso.com/tb.q"
$oIE = _IECreate ($url, 0, 0)
$sHTML = _IEBodyReadHTML ($oIE)
ClipPut($sHTML);写入文本到剪贴板.

这里的源代码是<strong class=fs_14>小雨,8℃</strong>.
所以用这个正则可以匹配的.
"<(?i)strong class=fs_14>(.*?)</(?i)strong>"
发表于 2011-3-22 15:18:32 | 显示全部楼层
"(.*?)"
求解,急
m765555 发表于 2011-3-22 13:50


就是匹配内容
strong是一个html标签,意思是加粗。

class=fs_14 是一个css类,表示strong下的一个类,他定义了strong更详细的表现形式。
 楼主| 发表于 2011-3-22 17:46:04 | 显示全部楼层
感谢,感谢各位大侠各位兄弟伙,呵呵
不过还有一事不明,为什么用代码获取的代码中class="fs_14"没有引号呢,直接打开网站,点查看源代码就有双引号呢??
发表于 2011-3-22 22:09:36 | 显示全部楼层
本帖最后由 love5173 于 2011-3-22 22:13 编辑

回复 2# 3mile
空格是\h,我知道你是手误,但是我们要严谨,避免误导新人
另外中间匹配的时候用到了贪婪属性?,特别是新人一定要注意,*  +  类得元字符在不加?的时候是最大匹配的,切记!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 10:26 , Processed in 0.080098 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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