haijie1223 发表于 2011-3-25 14:25:44

求一个字符的正则表达[已解决]

本帖最后由 haijie1223 于 2011-3-28 07:34 编辑

是这样的   我的一个程序里有这么一个变量
$a=“(001):asdfasdjlkjxczx”
字符型的a的随机值中都会有(xxx):这一段
所以我想用正则表达式把冒号左边的字符都获取下来赋值给新的变量$b

kevinch 发表于 2011-3-25 16:00:39

貌似stringsplit就可以。
要正则的话,试下这个".*?(?=\:)"

tryhi 发表于 2011-3-25 16:17:57

^[^\:]+

haijie1223 发表于 2011-3-25 16:34:19

楼上两位的正则返回值都一样 无论变量怎么变化   都只出现1

lixiaolong 发表于 2011-3-25 17:39:54

回复 4# haijie1223

2位的正则没问题,你的用法有问题.
我想你是这样写的吧?
$a = "(001):asdfasdjlkjxczx"
$b = StringRegExp($a, '.*?(?=\:)', 3)
MsgBox(0, 0, $b)
   
$b是数组,应该是这样.$a = "(001):asdfasdjlkjxczx"
$b = StringRegExp($a, '.*?(?=\:)', 3)
MsgBox(0, 0, $b)

lixiaolong 发表于 2011-3-25 20:32:19

本帖最后由 lixiaolong 于 2011-3-25 21:11 编辑

回复 3# tryhi

请问这里开头的 ^ 跟 \A 是一个意思吧?
我在哪里看过,但是忘了.

tryhi 发表于 2011-3-25 21:05:41

回复tryhi

请问这里开头的 ^ 跟 \A 是一个意思吧?
我在哪里看过,但是完了.
lixiaolong 发表于 2011-3-25 20:32 http://www.autoitx.com/images/common/back.gif


    ^表示匹配字符串的开头

lixiaolong 发表于 2011-3-25 21:12:04

回复 7# tryhi

谢谢!
我把字打错了 完了>忘了 {:face (52):}

haijie1223 发表于 2011-3-27 13:40:53

回复 8# lixiaolong


    谢谢李小龙 呵呵

easefull 发表于 2011-3-27 14:47:00

又做题咯#include <Array.au3>
$sText   = "(001):asdfasdjlkjxczx"
$sRegExp = '.*(?=\:)'
$asResult = StringRegExp($sText, $sRegExp, 1)
If @error Then
        MsgBox(4096, "", "返回结果非数组" &@LF& $asResult)
Else
        _ArrayDisplay($asResult)
        $b = $asResult
        MsgBox(4096, "", "$b = " & $b)
EndIf

easefull 发表于 2011-3-27 14:50:24

看来我又做错了.应该用懒惰模式的.
.*?(?=\:)
页: [1]
查看完整版本: 求一个字符的正则表达[已解决]