找回密码
 加入
搜索
查看: 8098|回复: 15

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

 火.. [复制链接]
发表于 2010-11-20 10:15:22 | 显示全部楼层 |阅读模式
本帖最后由 ahphsautoit 于 2010-11-20 20:15 编辑

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




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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-11-20 10:28:42 | 显示全部楼层
我想你的‘-’号应该是负号,不会出现在中间,‘.’号是小数号,只出现在数字中间,我给的表达式是:

-?\d+(?:\.\d+)?
 楼主| 发表于 2010-11-20 10:32:08 | 显示全部楼层
我想你的‘-’号应该是负号,不会出现在中间,‘.’号是小数号,只出现在数字中间,我给的表达式是:

-? ...
binghc 发表于 2010-11-20 10:28


你的意思是这样吗:$9=StringRegExp($8,'-?\d+(?:\.\d+)?',1),我试试哈,先谢谢了!
发表于 2010-11-20 10:36:05 | 显示全部楼层
本帖最后由 binghc 于 2010-11-20 10:37 编辑

回复 3# ahphsautoit


    是‘3’不是‘1’

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 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[0]
                                                MsgBox(0,Default,$9[$10])
                                        Next
                                        EndIf

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

$9=StringRegExp($8,'-?\d+(?:\.\d+)?',1)直接就退出了哦。
发表于 2010-11-20 10:40:58 | 显示全部楼层

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

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-11-20 10:44:03 | 显示全部楼层
我知道了,但是又有另外一个问题了:比如“汉字1000”,得到$9[0]=1000,照我的理解应该是:$9[0]=1,$9[1]=1000啊,怎么回事呢,数组的个数存在哪儿去了?
发表于 2010-11-20 10:49:02 | 显示全部楼层
不明白你的意思了,现在就问你一件事情,你到底想干什么?
是不是想找出目标字符串里的数值部分?如果是,我上面的代码就OK了
 楼主| 发表于 2010-11-20 10:53:46 | 显示全部楼层
回复 8# binghc

是这样:
:“汉字123,汉字-256,汉字25.5,汉字75”
得到的答案是:数组$9
$9[0]=123,$9[1]=-256,$9[2]=25.5,$9[3]=75
我理解的应该是:
$9[1]=123,$9[2]=-256,$9[3]=25.5,$9[4]=75  而$9[0]应该是数组的个数等于4。我就是问你这个问题。
 楼主| 发表于 2010-11-20 11:09:40 | 显示全部楼层
谢谢了!关于数组的问题我自己解决了!再次感谢 binghc !
发表于 2010-11-20 11:21:38 | 显示全部楼层
呵~我还是想说,你对数组不太了解,数组下标都是从0开始的
你说的[0]是存放个数,那是系统函数或命令特有的,比如StringSplit()
如果你想获取数组个数可以用UBound这条命令
发表于 2010-11-20 11:40:48 | 显示全部楼层
非常不错,谢谢
发表于 2010-11-20 13:02:17 | 显示全部楼层
最近正在学正则,感觉正则强大无比。。。。
发表于 2010-11-20 13:07:19 | 显示全部楼层
回复 13# .個朲綉√


    呵呵~确实很强大!
发表于 2010-11-20 14:09:14 | 显示全部楼层
如题,我头都糊了!一个小问题,请高手帮忙给个答案吧,我根据你的答案再研究开发了,呵呵!
有这样一个结 ...
ahphsautoit 发表于 2010-11-20 10:15

确实很强大,被正则弄死了还可以上论坛发贴求助!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 23:18 , Processed in 0.111439 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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