找回密码
 加入
搜索
查看: 2972|回复: 9

[效率算法] 求个正则表达式

[复制链接]
发表于 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 的值, 没有的处理成空串。
发表于 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), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
 楼主| 发表于 2017-4-2 21:19:23 | 显示全部楼层
回复 2# 雨林GG


    不好意思,可能是我没说清楚,三个input 都要匹配,后两个结果均为空即可。
发表于 2017-4-2 21:51:07 | 显示全部楼层
试下
(?mi)<input.+id="[^"]+"[^"]*?"?([^"]*?)"? class
发表于 2017-4-2 22:07:12 | 显示全部楼层
回复 4# afan


    A版正则用的太神奇,居然看懂了
 楼主| 发表于 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

   如有更好的方法,欢迎指教!
发表于 2017-4-9 10:51:58 | 显示全部楼层
 楼主| 发表于 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

注:“~”代表任意一个不存在的字符,可根据实际情况进行替换。

  运行结果:

[0]one
[1]0
[2]

是我想要的风格,呵呵~
发表于 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
 楼主| 发表于 2017-4-20 02:29:54 | 显示全部楼层
回复 9# kemyliu


    不是模拟网页,是POST取到的数据,没办法用IE函数。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-28 17:29 , Processed in 0.077800 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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