ahphsautoit 发表于 2010-11-20 10:15:22

(已解决)我被正则弄死了,求高手帮个小忙!

本帖最后由 ahphsautoit 于 2010-11-20 20:15 编辑

如题,我头都糊了!一个小问题,请高手帮忙给个答案吧,我根据你的答案再研究开发了,呵呵!
有这样一个结构的字符串:“汉字123,汉字-256,汉字25.5,汉字75”
或者可以把长的字符串取成“汉字-123.5”这样的结构再来用正则取其中的数字,该怎么写正则呢?
我想把其中的数字(包括可能的“-”号和“.”号一起)提取出来存入数组,这个正则应该怎么写啊?
谢谢了!
$9=StringRegExp($8,'???',1){:face (113):}
笨办法倒是有一个:一个一个地检测字符,把符合要求的提出来再凑到一块,呵呵呵,你们不会想要我这样糟蹋AU3吧?快点给出你们的答案吧,我一定认真对照学习哦




呵呵,谢谢帮我解惑的大哥了,有点久没有上论坛,都不知道怎么改成“已解决”了,在标题上加了个已解决,呵呵呵!

binghc 发表于 2010-11-20 10:28:42

我想你的‘-’号应该是负号,不会出现在中间,‘.’号是小数号,只出现在数字中间,我给的表达式是:

-?\d+(?:\.\d+)?

ahphsautoit 发表于 2010-11-20 10:32:08

我想你的‘-’号应该是负号,不会出现在中间,‘.’号是小数号,只出现在数字中间,我给的表达式是:

-? ...
binghc 发表于 2010-11-20 10:28 http://www.autoitx.com/images/common/back.gif

你的意思是这样吗:$9=StringRegExp($8,'-?\d+(?:\.\d+)?',1),我试试哈,先谢谢了!

binghc 发表于 2010-11-20 10:36:05

本帖最后由 binghc 于 2010-11-20 10:37 编辑

回复 3# ahphsautoit


    是‘3’不是‘1’

ahphsautoit 发表于 2010-11-20 10:36:29

回复 2# binghc

$9=StringRegExp($8,'-?\d+(?:\.\d+)?',1)
                                        If @error Then
                                                MsgBox(0,'',@error)
                                        Else
                                               
                                        For $10=1 To $9
                                                MsgBox(0,Default,$9[$10])
                                        Next
                                        EndIf

我自己 用的:$9=StringRegExp($8,'\d',1)还提示错误:没有数组

$9=StringRegExp($8,'-?\d+(?:\.\d+)?',1)直接就退出了哦。

binghc 发表于 2010-11-20 10:40:58


#include<array.au3>
$str='汉字123,汉字-256,汉字25.5,汉字75'
$str=StringRegExp($str,'-?\d+(?:\.\d+)?',3)
_ArrayDisplay($str)

ahphsautoit 发表于 2010-11-20 10:44:03

我知道了,但是又有另外一个问题了:比如“汉字1000”,得到$9=1000,照我的理解应该是:$9=1,$9=1000啊,怎么回事呢,数组的个数存在哪儿去了?

binghc 发表于 2010-11-20 10:49:02

不明白你的意思了,现在就问你一件事情,你到底想干什么?
是不是想找出目标字符串里的数值部分?如果是,我上面的代码就OK了

ahphsautoit 发表于 2010-11-20 10:53:46

回复 8# binghc

是这样:
:“汉字123,汉字-256,汉字25.5,汉字75”
得到的答案是:数组$9
$9=123,$9=-256,$9=25.5,$9=75
我理解的应该是:
$9=123,$9=-256,$9=25.5,$9=75而$9应该是数组的个数等于4。我就是问你这个问题。

ahphsautoit 发表于 2010-11-20 11:09:40

谢谢了!关于数组的问题我自己解决了!再次感谢 binghc !

binghc 发表于 2010-11-20 11:21:38

呵~我还是想说,你对数组不太了解,数组下标都是从0开始的
你说的是存放个数,那是系统函数或命令特有的,比如StringSplit()
如果你想获取数组个数可以用UBound这条命令

h20040606 发表于 2010-11-20 11:40:48

非常不错,谢谢

.個朲綉√ 发表于 2010-11-20 13:02:17

最近正在学正则,感觉正则强大无比。。。。

binghc 发表于 2010-11-20 13:07:19

回复 13# .個朲綉√


    呵呵~确实很强大!

qq342252004 发表于 2010-11-20 14:09:14

如题,我头都糊了!一个小问题,请高手帮忙给个答案吧,我根据你的答案再研究开发了,呵呵!
有这样一个结 ...
ahphsautoit 发表于 2010-11-20 10:15 http://www.autoitx.com/images/common/back.gif
确实很强大,被正则弄死了还可以上论坛发贴求助!
页: [1] 2
查看完整版本: (已解决)我被正则弄死了,求高手帮个小忙!