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 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题