找回密码
 加入
搜索
查看: 1580|回复: 7

正则中的 $ 求解

[复制链接]
发表于 2009-6-13 11:32:13 | 显示全部楼层 |阅读模式
本帖最后由 lsq726 于 2009-6-13 14:06 编辑

在论坛 看到 一贴:
http://www.autoitx.com/forum.php ... hlight=%D5%FD%D4%F2

SANHEN兄给出的答案:
$var="http://dl_dir.qq.com/qqfile/qq/QQ2008IIFkbcqdy/QQ2008IIBeta1SP1.exe"
$var=StringRegExp($var,"^(?i)http://.*/(.*)$",3)
 
MsgBox(0,0,$var[0])
还有liongodmien 兄出的答案:
$Exe = StringRegExp('http://dl_dir.qq.com/qqfile/qq/QQ2008IIFkbcqdy/QQ2008IIBeta1SP1.exe', '[^/]+$', 1, 1)
MsgBox(0,0, $Exe[0])
正则中都有 个$字符  代表什么意思?
还有这2个正则 能注解一下 就更好了..
发表于 2009-6-13 11:50:53 | 显示全部楼层
$XXX意思是 XXX变量

$理解为变量
发表于 2009-6-13 11:51:08 | 显示全部楼层
至于正则,得等高手来解释
发表于 2009-6-13 11:52:12 | 显示全部楼层
走人吃饭!
发表于 2009-6-13 13:44:18 | 显示全部楼层
$=字符串结尾
 楼主| 发表于 2009-6-13 14:06:29 | 显示全部楼层
$=字符串结尾
78391493 发表于 2009-6-13 13:44



明白了  谢谢。。
发表于 2009-6-13 16:33:43 | 显示全部楼层
正则是个好东西,闲着也是闲着,注解分析一下吧:

目标字符串:
'http://dl_dir.qq.com/qqfile/qq/QQ2008IIFkbcqdy/QQ2008IIBeta1SP1.exe'

分析第一个表达式:^(?i)http://.*/(.*)$
首先要了解几个含义:
. 匹配除 "\n" 之外的任何单个字符
* 重复零次或更多次
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
( ) 在这里是表示你最终所需要得到字符段,也就是匹配的结果
如果单纯是判断这一句的话
其实第一个表达式可以不要^(?i)http:
写成://.*/(.*)$就ok了

分析第二个表达式:[^/]+$
+ 重复一次或更多次
[ ] 包含一系列字符,能够匹配其中任意一个字符
[^/] 包含一系列字符,则能够匹配/之外的任意一个字符,也就是把/排除掉
$就是取所有匹配[^/]+的最后一个
如果改成[^/]+你会发现他匹配结果就是
0/5  "http:"
1/5  "dl_dir.qq.com"
2/5  "qqfile"
3/5  "qq"
4/5  "QQ2008IIFkbcqdy"
5/5  "QQ2008IIBeta1SP1.exe"
如果改成^[^/]+你会发现他匹配结果就是
0/0  "http:"
也就是匹配[^/]+的第一个

说得有点糊里糊涂,正则是个比较抽象的表达方式
有时候只可意会不可言传
需要自己去测试几次慢慢理解

评分

参与人数 1金钱 +10 收起 理由
lsq726 + 10 谢谢~

查看全部评分

发表于 2009-6-13 16:34:43 | 显示全部楼层
学习楼上的,正则,。。。我
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-14 03:59 , Processed in 0.088206 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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