lluxury 发表于 2011-4-19 21:55:18

一个正则表达式的疑问,(解决)

本帖最后由 lluxury 于 2011-4-22 13:10 编辑

重新表达了下思路,请见10楼






1825/1826要取/前成的部分
我写的 \b\w+(?=\/\b)
操作系统上可以取到,au3里就不行

$array = StringRegExp('1825/1826', '\b\w+(?=\/\b)', 3)
ConsoleWrite(" var" & $array & @CRLF)



这部分我没给全,和数组无关,其实是我取值取错了,取表的值,我给取成表这个变量身了.
                                $str=_IEPropertyGet($oInput, "innertext")
                                $sR = StringRegExp($str, '\b\w+(?=\:\b)', 3)
                                MsgBox(0, $str, $sR)

love5173 发表于 2011-4-19 22:04:02

本帖最后由 love5173 于 2011-4-19 22:05 编辑

我对ConsoleWrite命令不是很熟
但是貌似你输出的是数组,是不是表达方式有问题,字符串怎么跟数组混一起了
写成(\d+)\/也可以的

水木子 发表于 2011-4-19 22:39:22

本帖最后由 水木子 于 2011-4-19 22:49 编辑

不大明白楼主想取得什么样的结果!

#Include <Array.au3>
$avArray = StringRegExp('1825/1826', '^\d+', 3)
_ArrayDisplay($avArray)

happytc 发表于 2011-4-19 22:46:49

1825/1826要取/前成的部分
我写的 \b\w+(?=\/\b)
操作系统上可以取到,au3里就不行

$array = StringR ...
lluxury 发表于 2011-4-19 21:55 http://www.autoitx.com/images/common/back.gif

ConsoleWrite(" var" & $array & @CRLF)

这时候$array是数组,你直接打印$array当然不行了。得象上面那样加脚标呀

lluxury 发表于 2011-4-19 23:16:22

本帖最后由 lluxury 于 2011-4-19 23:23 编辑

发现了,谢谢大大,已改正,不过出来个新问题

我是从网页抓的数据
$oInput 的值为 1825/1826

                              发现了,谢谢大大,已改正,不过出来个新问题

我是从网页抓的数据,本身的数值如果带上引号,用上面的正则是可以的,但变量带上引号就失效了,这个怎么处理
                              $str=1825/1826
                                $sR = StringRegExp($str, '\b\w+(?=\:\b)', 3)
                                MsgBox(0, $str, $sR)

love5173 发表于 2011-4-19 23:20:47

变量&'常量'
只有变量就不用引号了

love5173 发表于 2011-4-19 23:22:22

回复 5# lluxury
大哥,刚说了数组不是那么表达的
msgbox(0,$str,$sr)

lluxury 发表于 2011-4-19 23:22:46

楼上的,我试过,只有变量, 不用引号,正则无结果,貌似1825/1826自己先运算了

lluxury 发表于 2011-4-19 23:27:38

回复lluxury
大哥,刚说了数组不是那么表达的
msgbox(0,$str,$sr)
love5173 发表于 2011-4-19 23:22 http://www.autoitx.com/images/common/back.gif


    不好意思,拷错了,重编辑过

lluxury 发表于 2011-4-19 23:32:37

重新表达下

我从网页里抓出来 $s=1825/1826
我只要前面的1825有什么方法

happytc 发表于 2011-4-20 00:00:34

重新表达下

我从网页里抓出来 $s=1825/1826
我只要前面的1825有什么方法
lluxury 发表于 2011-4-19 23:32 http://www.autoitx.com/images/common/back.gif


抓出来时,它是字符属性,不会计算的。你说了这么多,还不如把网址给出来,大家直接给你答案得了。

lluxury 发表于 2011-4-20 00:13:32

本帖最后由 lluxury 于 2011-4-20 00:22 编辑

我是想给,问题要注册的,今天不能注册...


举个例子

#include <IE.au3>
Filedelete ("Tq.txt")
$Url="http://www.soso.com/tb.q"
$oIE = _IECreate ($url, 0, 0)
$sHTML = _IEBodyReadHTML ($oIE)
$array= StringRegExp($sHTML, "<(?i)strong class=fs_14>(.*?)</(?i)strong>",1)
for $i = 0 to UBound($array) - 1
$tqtemp = $array[$i]
Next
$tqtoday = StringReplace($tqtemp, " ", " ")
msgbox (32,"天气",$tqtoday)
_IEQuit ($oIE)


输出是   多云,11℃
我就要里面的11,该怎么做呢

3mile 发表于 2011-4-20 00:29:28

\d+(?=\\)
字数补丁

lluxury 发表于 2011-4-20 00:54:34

本帖最后由 lluxury 于 2011-4-20 01:04 编辑

谢谢,13楼,验证了下,好像不行

另外发现一点,取汉字好像会取到2个数组里,也许是我写错了

$str="位置:铁掌山 "
$array = StringRegExp($str, '[^位置:]', 3)
MsgBox(0, $str, $array)

出来个铁....


更新
用字符串函数,出来了,但不是正则....
$array=StringTrimLeft ( $str,3 )

lixiaolong 发表于 2011-4-20 08:01:43

回复 14# lluxury

$str="位置:铁掌山 "
$array = StringRegExp($str, '(?<=位置:).+', 3)
MsgBox(0, $str, $array)
页: [1] 2
查看完整版本: 一个正则表达式的疑问,(解决)