找回密码
 加入
搜索
查看: 3292|回复: 5

[AU3基础] 正则表达式中包括变量,该怎么表示

  [复制链接]
发表于 2012-2-29 10:18:46 | 显示全部楼层 |阅读模式
本帖最后由 半翅鸟 于 2012-2-29 10:37 编辑
#include <Array.au3>
#include <INet.au3>
$s_URL = 'http://www.ysxyfs.com/goods.php?id=2230'
$sText = _INetGetSource($s_URL)
Local $huohao = StringRegExp($sText, '货号:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $pinpai = StringRegExp($sText, '品牌:(.+?)<br', 3)
Local $dianji = StringRegExp($sText, '点击数:(.+?)<br', 3)
Local $price = StringRegExp($sText, '标价:.+?>(.+?)<', 3)  
Local $colors = StringRegExp($sText, '(?s)颜色:.+?" />\s+(.+?)</', 3)
Local $size = StringRegExp($sText, '(?s)大小:.+?" />\s+(.+?)', 3)
If Not @Error Then MsgBox(0, '商品货号 ',$huohao[0]&$kucun[0]&$pinpai[0]&$dianji[0]&$price[0]&$colors[0]&$size[0])
我已经匹配到了尺码M,想分别匹配它的数量,以及,取出L,XL有可能还有XXL尺码以及数量,这里M可能是变量,有可能第一个出现的是S,
尺码可能是S M L XL XXL 最多是这样
有什么办法能够取出来呢,或者可以一次性取出来,用数组表示?请教高手,谢谢,这几天一直在研究正则,我不是走错了方向吧?
我把这个查询货源数量的工具当做第一个练手了,而我一个朋友只写小应用程序,没有涉及到正则,同样的实践,他现在能写出很漂亮的GUI了,郁闷
希望得到大侠们的帮助和指点,我的学习方向是确定一个程序,然后练手,再一个程序,再练
[code:]<br />
                       
                        <label for="spec_value_16391">
                        <input type="radio" name="spec_247" value="16391" id="spec_value_16391" checked onClick="changePrice()" />
                        M
                                                        [381]
                                                </label>
                        <br />
                                                <label for="spec_value_16392">
                        <input type="radio" name="spec_247" value="16392" id="spec_value_16392"  onClick="changePrice()" />
                        L
                                                        [390]
                                                </label>
                        <br />
                                                <label for="spec_value_16393">
                        <input type="radio" name="spec_247" value="16393" id="spec_value_16393"  onClick="changePrice()" />
                        XL
                                                        [392]
                                                        </label>
                        <br />[/code]大小:<br />
发表于 2012-2-29 10:40:22 | 显示全部楼层

#include <Array.au3>
#include <INet.au3>
#include<Array.au3>
$s_URL = 'http://www.ysxyfs.com/goods.php?id=2230'
$sText = _INetGetSource($s_URL)
Local $huohao = StringRegExp($sText, '货号:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $pinpai = StringRegExp($sText, '品牌:(.+?)<br', 3)
Local $dianji = StringRegExp($sText, '点击数:(.+?)<br', 3)
Local $price = StringRegExp($sText, '标价:.+?>(.+?)<', 3)  
Local $colors = StringRegExp($sText, '(?s)颜色:.+?" />\s+(.+?)</', 3)
Local $size = StringRegExp($sText, '/>\s*(S|M|L|XL|XXL)', 3)
_ArrayDisplay($size)
 楼主| 发表于 2012-2-29 10:43:22 | 显示全部楼层
本帖最后由 半翅鸟 于 2012-2-29 10:48 编辑

回复 2# www378660084


    我用这个
(?s)\[(\d+)]
可以查询到M的数量,不过我觉得好像方法很笨,用你给的表达式可以找出尺码M,但是下面的尺码怎么办 呢
发表于 2012-2-29 11:01:03 | 显示全部楼层

#include <Array.au3>
#include <INet.au3>
#include<Array.au3>
$s_URL = 'http://www.ysxyfs.com/goods.php?id=2230'
$sText = _INetGetSource($s_URL)
Local $huohao = StringRegExp($sText, '货号:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $kucun = StringRegExp($sText, '库存:(.+?)<br', 3)
Local $pinpai = StringRegExp($sText, '品牌:(.+?)<br', 3)
Local $dianji = StringRegExp($sText, '点击数:(.+?)<br', 3)
Local $price = StringRegExp($sText, '标价:.+?>(.+?)<', 3)  
Local $colors = StringRegExp($sText, '(?s)颜色:.+?" />\s+(.+?)</', 3)
Local $size = StringRegExp($sText, '/>\s*(S|M|L|XL|XXL)\s*\[(\d*)\]', 3)
_ArrayDisplay($size)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-2-29 15:41:07 | 显示全部楼层
回复 4# www378660084


    />\s*(S|M|L|XL|XXL)\s*\[(\d*)\]

   这个表达式我大半能读懂匹配/>后面换行多次,分支结构,换行多次,寻找[数字重复多次],但我不明白为什么结果M L XL以及数量都出来了,高啊
发表于 2012-3-3 10:19:53 | 显示全部楼层
\s不是换行,是空白字符,*表示0个空白以上
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 17:38 , Processed in 0.093026 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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