求个正则表达式
数据源:<input type="text" id="001" value="one" class="txt">
<input type="text" id="002" value="" class="txt">
<input type="text" id="003" class="txt">
需要提取 value 的值, 没有的处理成空串。 ;### 友情提示:本脚本由 Au3.REHelper 于 2017/04/02 20:14 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
'<input type="text" id="001" value="one" class="txt">' & @CRLF & _
'<input type="text" id="002" value="" class="txt">' & @CRLF & _
'<input type="text" id="003" class="txt">' & @CRLF
Local $aSRE = StringRegExp($sSource, '(?i)(?<=value=")[^"]*', 3)
;If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE)) 回复 2# 雨林GG
不好意思,可能是我没说清楚,三个input 都要匹配,后两个结果均为空即可。 试下(?mi)<input.+id="[^"]+"[^"]*?"?([^"]*?)"? class 回复 4# afan
A版正则用的太神奇,居然看懂了 回复 4# afan
a版果然厉害!!学习了。
另外,使用的时候又遇到点小问题,按着这个思路解决了,发出来供大家研究:
<input type="text" id="001" value="one" class="txt">
<input type="text" id="002" a="ok" value="0" class="txt">
<input type="text" id="003" class="txt">
改进后的表达式:
(?mi)<input.+id="[^"]+"[^"]*?"?[^"]*?"?[^"]*?"?([^"]*?)"? class
如有更好的方法,欢迎指教! {:face (131):} 终于找到了一种更好的思路,也比较整洁:
<input type="text" id="001" value="one" class="txt">
<input type="text" id="002" a="ok" value="0" class="txt">
<input type="text" id="003" class="txt">
改进后的表达式:
((?<=value=")[^"]*|~?)"?\s*class
注:“~”代表任意一个不存在的字符,可根据实际情况进行替换。
运行结果:
one
0
是我想要的风格,呵呵~
{:face (356):} 回复 1# cihron
其实你这个不一定非要用正则表达式,完全可以用IE函数获得。
#include <IE.au3>
$input1=_IEGetObjById ($oIE," 001")
$input2=_IEGetObjById ($oIE," 002")
$input3=_IEGetObjById ($oIE," 003")
Value1=$input1.value
Value2=$input2.value
Value3=$input3.value 回复 9# kemyliu
不是模拟网页,是POST取到的数据,没办法用IE函数。
页:
[1]