cihron 发表于 2017-4-2 19:14:00

求个正则表达式

数据源:
<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 的值, 没有的处理成空串。

雨林GG 发表于 2017-4-2 20:23:27

;### 友情提示:本脚本由 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))

cihron 发表于 2017-4-2 21:19:23

回复 2# 雨林GG


    不好意思,可能是我没说清楚,三个input 都要匹配,后两个结果均为空即可。

afan 发表于 2017-4-2 21:51:07

试下(?mi)<input.+id="[^"]+"[^"]*?"?([^"]*?)"? class

zghwelcome 发表于 2017-4-2 22:07:12

回复 4# afan


    A版正则用的太神奇,居然看懂了

cihron 发表于 2017-4-3 02:07:08

回复 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

   如有更好的方法,欢迎指教!

zxhou1 发表于 2017-4-9 10:51:58

{:face (131):}

cihron 发表于 2017-4-11 01:50:38

终于找到了一种更好的思路,也比较整洁:

<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):}

kemyliu 发表于 2017-4-11 09:16:55

回复 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

cihron 发表于 2017-4-20 02:29:54

回复 9# kemyliu


    不是模拟网页,是POST取到的数据,没办法用IE函数。
页: [1]
查看完整版本: 求个正则表达式