找回密码
 加入
搜索
查看: 1346|回复: 3

[网络通信] [已解决]小白求助一个正则表达式

[复制链接]
发表于 2018-12-6 00:04:19 | 显示全部楼层 |阅读模式
本帖最后由 aryce 于 2018-12-9 23:29 编辑

先说正题  
<p class="op_exactqa_s_prop c-gap-bottom-small">
                                    马化腾年龄:
                                </p>
                                                <div class="op_exactqa_s_answer">
                                                                47岁
                                                                                                        </div>
                                                                                                                                                            <p class="op_exactqa_s_abstract c-gap-top-small">
从这一段中取出 “47”这个数字。


好了,现在说背景 ,我想给程序加个时间锁 , 超过指定时间,就打不开了。
这个时间从哪里来呢 ,我在百度搜索“马化腾年龄” 然后超过“49” 就直接结束,47 48都可以。
代码如下:
#include <Inet.au3>
#include <IE.au3> 
$oie = _IECreate ("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=%E9%A9%AC%E5%8C%96%E8%85%BE%E5%B9%B4%E9%BE%84&rsv_pq=915e54fc0001bdb6&rsv_t=04e6zdyE%2BfFPow%2F0BDHFAvC6v9C9hHqpN%2BycQW8KSfovvAzwoezTophiVtY&rqlang=cn&rsv_enter=1&rsv_sug3=20&rsv_sug1=8&rsv_sug7=101",0,0,1)
$body = _IEDocReadHTML($oie)
$timeout = StringRegExpReplace ( $body, "表达式", "" )

本帖子中包含更多资源

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

×
 楼主| 发表于 2018-12-6 00:22:28 来自手机 | 显示全部楼层
对了 应该是匹配到除47以外的  用StringRegExpReplace替换成空值, 或者还有更简单的办法吗?
发表于 2018-12-6 13:35:04 | 显示全部楼层
### 友情提示:本脚本由 Au3.REHelper 于 2018/12/06 13:30 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
                '<p class="op_exactqa_s_prop c-gap-bottom-small">' & @CRLF & _
                '                                    马化腾年龄:' & @CRLF & _
                '                                </p>' & @CRLF & _
                '                                                <div class="op_exactqa_s_answer">' & @CRLF & _
                '                                                                47岁' & @CRLF & _
                '                                                                                                        </div>' & @CRLF & _
                '                                                                                                                                                            <p class="op_exactqa_s_abstract c-gap-top-small">'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(\d+)岁', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
====================================================
不用那么麻烦,宽松的话(\d+)岁能直接匹配到,不放心的话,可以写严格点:answer">\s+(\d+)岁
 楼主| 发表于 2018-12-6 19:27:21 | 显示全部楼层
qq362817567 发表于 2018-12-6 13:35
====================================================
不用那么麻烦,宽松的话(\d+)岁能直接匹配到, ...

谢楼上  搞定了
#include <Inet.au3>
#include <IE.au3> 
$oie = _IECreate ("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=%E9%A9%AC%E5%8C%96%E8%85%BE%E5%B9%B4%E9%BE%84&rsv_pq=915e54fc0001bdb6&rsv_t=04e6zdyE%2BfFPow%2F0BDHFAvC6v9C9hHqpN%2BycQW8KSfovvAzwoezTophiVtY&rqlang=cn&rsv_enter=1&rsv_sug3=20&rsv_sug1=8&rsv_sug7=101",0,0,1)
$body = _IEDocReadHTML($oie)
$timeout = StringRegExp ($body,"(\d+)岁",1)
MsgBox(0,"",$timeout[0])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-26 18:32 , Processed in 0.074168 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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