关于字符串问题请教
字符串以“\”分开,例如:344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV如何只读出最后三个字符 :64RR\4RR\ZXGV。请各位指教
[ 本帖最后由 jchang 于 2008-10-1 22:51 编辑 ] 没看明白
是不是这样的stringleft("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", 3)
还是$a=stringsplit("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", "\")
$a[$a-1], $a[$a-2],$a[$a-3],这个应该是最右边的
$a,$a,$a这是最左边的
[ 本帖最后由 netegg 于 2008-9-30 21:12 编辑 ] 我也来学习学习
$string= '344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$M = ''
$t = StringSplit($string, "\", 0)
For $i = $t - 2 To $t
$M &=$t[$i] & @CRLF
Next
MsgBox(64, "", $M)
$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b) 原帖由 pcbar 于 2008-9-30 23:09 发表 http://www.autoitx.com/images/common/back.gif
$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b)
超版真是强,昨晚第一时间想到用StringRegExp,可惜帮助看来看去也想不出一个合适的表达式...
这下学习了!
不过,再看了多次帮助也还没明白,请注释一下,好吗?
[ 本帖最后由 liongodmien 于 2008-10-1 11:21 编辑 ] 终于弄明白了!
([^\\]+\\){2}[^\\]+$
[^\\]匹配非“\”字符
+一个或多个
\\匹配一个“\”字符
{2}按前面的子式匹配2次
[^\\]再次匹配非“\”字符
+ 一个或多个
$从字符串尾开始匹配
()里面的表达式为此正则表达式的子式
把意思连接起来就是:
(匹配非“\”字符一个或多个再匹配一个“\”字符)‘按这种情况’重复2次,再匹配非“\”字符一个或多个,此种匹配方式从字串尾开始
今天下午看了一下午的正则表达式,那篇文章说30分钟认识,我反复用了4小时前前后后的看!累死了!
[ 本帖最后由 liongodmien 于 2008-10-1 21:07 编辑 ] 非常感谢各位的指点,问题解决啦,以上的三种方法都是可以的,看来以后还得好好学啊! 补充记录!
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
和
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+\z',2)
效果一致,$是正则表达式一个有明确说明的定义符,在AUTOIT有帮助没有说明,\z就是在AUTOIT的帮助里有明确说明的了!
页:
[1]