找回密码  加入

AUTOIT CN

搜索
查看: 122|回复: 3

[效率算法] [已解决]小白求助一个正则表达式

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 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都可以。
代码如下:
  1. #include <Inet.au3>
  2. #include <IE.au3>
  3. $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)
  4. $body = _IEDocReadHTML($oie)
  5. $timeout = StringRegExpReplace ( $body, "表达式", "" )
复制代码

本帖子中包含更多资源

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

x
 楼主| 发表于 5 天前 来自手机 | 显示全部楼层
对了 应该是匹配到除47以外的  用StringRegExpReplace替换成空值, 或者还有更简单的办法吗?
发表于 5 天前 | 显示全部楼层
  1. ### 友情提示:本脚本由 Au3.REHelper 于 2018/12/06 13:30 自动生成,不保证其正确性,请自行测试 ###
  2. #include <Array.au3>
  3. Local $sSource = _
  4.                 '<p class="op_exactqa_s_prop c-gap-bottom-small">' & @CRLF & _
  5.                 '                                    马化腾年龄:' & @CRLF & _
  6.                 '                                </p>' & @CRLF & _
  7.                 '                                                <div class="op_exactqa_s_answer">' & @CRLF & _
  8.                 '                                                                47岁' & @CRLF & _
  9.                 '                                                                                                        </div>' & @CRLF & _
  10.                 '                                                                                                                                                            <p class="op_exactqa_s_abstract c-gap-top-small">'
  11. ;~MsgBox(0, '源字符串', $sSource)
  12. Local $aSRE = StringRegExp($sSource, '(\d+)岁', 3)
  13. If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
  14. _ArrayDisplay($aSRE, UBound($aSRE))
复制代码

====================================================
不用那么麻烦,宽松的话(\d+)岁能直接匹配到,不放心的话,可以写严格点:answer">\s+(\d+)岁
 楼主| 发表于 5 天前 | 显示全部楼层
qq362817567 发表于 2018-12-6 13:35
====================================================
不用那么麻烦,宽松的话(\d+)岁能直接匹配到, ...

谢楼上  搞定了
  1. #include <Inet.au3>
  2. #include <IE.au3>
  3. $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)
  4. $body = _IEDocReadHTML($oie)
  5. $timeout = StringRegExp ($body,"(\d+)岁",1)
  6. MsgBox(0,"",$timeout[0])
复制代码
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2018-12-11 15:53 , Processed in 0.089787 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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