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

关于字符串问题请教

[复制链接]
发表于 2008-9-30 20:15:54 | 显示全部楼层 |阅读模式
字符串以“\”分开,例如:344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV
如何只读出最后三个字符 :64RR\4RR\ZXGV。请各位指教

[ 本帖最后由 jchang 于 2008-10-1 22:51 编辑 ]
发表于 2008-9-30 21:10:50 | 显示全部楼层
没看明白
是不是这样的stringleft("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", 3)
还是$a=stringsplit("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", "\")
$a[$a[0]-1], $a[$a[0]-2],$a[$a[0]-3],这个应该是最右边的
$a[1],$a[2],$a[3]这是最左边的

[ 本帖最后由 netegg 于 2008-9-30 21:12 编辑 ]
发表于 2008-9-30 22:45:42 | 显示全部楼层
我也来学习学习

$string= '344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$M = ''
$t = StringSplit($string, "\", 0)
For $i = $t[0] - 2 To $t[0]
        $M &=$t[$i] & @CRLF
Next
MsgBox(64, "", $M)
发表于 2008-9-30 23:09:09 | 显示全部楼层
$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b[0])
发表于 2008-10-1 10:32:39 | 显示全部楼层
原帖由 pcbar 于 2008-9-30 23:09 发表
$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b[0])


超版真是强,昨晚第一时间想到用StringRegExp,可惜帮助看来看去也想不出一个合适的表达式...

这下学习了!

不过,再看了多次帮助也还没明白,请注释一下,好吗?

[ 本帖最后由 liongodmien 于 2008-10-1 11:21 编辑 ]
发表于 2008-10-1 15:09:25 | 显示全部楼层
终于弄明白了!

([^\\]+\\){2}[^\\]+$
[^\\]  匹配非“\”字符
+  一个或多个
\\  匹配一个“\”字符
{2}  按前面的子式匹配2次
[^\\]  再次匹配非“\”字符
+   一个或多个
$  从字符串尾开始匹配
()  里面的表达式为此正则表达式的子式
把意思连接起来就是:
(匹配非“\”字符一个或多个再匹配一个“\”字符)‘按这种情况’重复2次,再匹配非“\”字符一个或多个,此种匹配方式从字串尾开始
今天下午看了一下午的正则表达式,那篇文章说30分钟认识,我反复用了4小时前前后后的看!累死了!

[ 本帖最后由 liongodmien 于 2008-10-1 21:07 编辑 ]

评分

参与人数 1金钱 +2 收起 理由
顽固不化 + 2 难得你解释的这么清楚

查看全部评分

 楼主| 发表于 2008-10-1 22:50:49 | 显示全部楼层
非常感谢各位的指点,问题解决啦,以上的三种方法都是可以的,看来以后还得好好学啊!
发表于 2008-10-2 13:14:52 | 显示全部楼层
补充记录!
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
和
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+\z',2)
效果一致,$是正则表达式一个有明确说明的定义符,在AUTOIT有帮助没有说明,\z就是在AUTOIT的帮助里有明确说明的了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 21:19 , Processed in 0.076929 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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