以下表达式:
(bin) 68 % set a 1b ;#给变量a赋值1b
1b
(bin) 69 % set result [regexp {1b2c*} $a resu] ;#将匹配变量a得到的结果赋值给变量resu
0 ;#返回匹配成功的次数
(bin) 70 % puts $resu ;#输出变量resu
can't read "resu": no such variable
(bin) 71 % set a z ;#给变量a赋值z
z
(bin) 72 % set result [regexp {zo*} $a resu] ;#将匹配变量a得到的内容赋值给变量resu
1 ;#返回匹配成功的次数
(bin) 73 % puts $resu ;#输出变量resu的值
z
(bin) 74 %
两个表达式,一个匹配条件是1b2c*,匹配对象字符串是1b,结果返回没有匹配到内容,但是第二个表达式匹配条件是zo*,匹配对象字符串是z,结果却匹配到了。这个是什么原因啊?命名第二个表达式表示的是带有zo开头的字符串啊,为什么能匹配到z?而第一个却匹配不到1b?
星号的意思是匹配0次到多次,所以哪位大神可以解答一下????
10币不多,请大神为小弟解惑。
号表示匹配 前面的字符0次和多次,所以第一个匹配条件1b2c*能匹配的值集合为{1b2,1b2c,1b2cc,1b2ccc,...},
而第二个匹配条件zo*能匹配的集合为{z,zo,zoo,zooo,...},所以得到了你粘贴的结果
由于+-*?这几个都属于正则表达式中的保留字,因此,若需要将它们作为字符中的字符元素进行搜索和替换时,必须使用转义符符号"\"
即"+"表示字符"+"; "*"表示字符"*"; "-"表示字符"-"; "\?"表示字符"?";
若将所有的这些字符替换为字符"/"的话,其正则表示如下:
var strResult=str.replace(/+|-|*|\?/g,"/")