半翅鸟 发表于 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&$kucun&$pinpai&$dianji&$price&$colors&$size)我已经匹配到了尺码M,想分别匹配它的数量,以及,取出L,XL有可能还有XXL尺码以及数量,这里M可能是变量,有可能第一个出现的是S,
尺码可能是S M L XL XXL 最多是这样
有什么办法能够取出来呢,或者可以一次性取出来,用数组表示?请教高手,谢谢,这几天一直在研究正则,我不是走错了方向吧?
我把这个查询货源数量的工具当做第一个练手了,而我一个朋友只写小应用程序,没有涉及到正则,同样的实践,他现在能写出很漂亮的GUI了,郁闷
希望得到大侠们的帮助和指点,我的学习方向是确定一个程序,然后练手,再一个程序,再练
<br />
                       
                        <label for="spec_value_16391">
                        <input type="radio" name="spec_247" value="16391" id="spec_value_16391" checked onClick="changePrice()" />
                        M
                                                       
                                                </label>
                        <br />
                                                <label for="spec_value_16392">
                        <input type="radio" name="spec_247" value="16392" id="spec_value_16392"onClick="changePrice()" />
                        L
                                                       
                                                </label>
                        <br />
                                                <label for="spec_value_16393">
                        <input type="radio" name="spec_247" value="16393" id="spec_value_16393"onClick="changePrice()" />
                        XL
                                                       
                                                        </label>
                        <br />大小:<br />

www378660084 发表于 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,但是下面的尺码怎么办 呢

www378660084 发表于 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)

半翅鸟 发表于 2012-2-29 15:41:07

回复 4# www378660084


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

   这个表达式我大半能读懂匹配/>后面换行多次,分支结构,换行多次,寻找[数字重复多次],但我不明白为什么结果M L XL以及数量都出来了,高啊

manlty 发表于 2012-3-3 10:19:53

\s不是换行,是空白字符,*表示0个空白以上
页: [1]
查看完整版本: 正则表达式中包括变量,该怎么表示