weixin_38497575 2017-12-12 12:38 采纳率: 100%
浏览 4996
已采纳

关于正则表达式的星号和加号

以下表达式:
(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币不多,请大神为小弟解惑。

  • 写回答

2条回答 默认 最新

  • timezhourenquan 2017-12-12 13:09
    关注

    号表示匹配 前面的字符0次和多次,所以第一个匹配条件1b2c*能匹配的值集合为{1b2,1b2c,1b2cc,1b2ccc,...},
    而第二个匹配条件zo*能匹配的集合为{z,zo,zoo,zooo,...},所以得到了你粘贴的结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序