在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12485|回复: 12

[原创] 求问关于TCL语言里面正则表达式regexp匹配的问你

[复制链接]
发表于 2012-12-25 23:43:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人用正则表达式regexp来匹配一组长字符串,但是希望这样regexp  {^\s+[linex $a $c].* }  [read [open fifo.v r]] 貌似正则表达式里面不支持里面嵌套替换的变量和返回值,我这事一个循环,匹配字符不停的在变,不知道如何解决???
想问问大神们的解决方案。
发表于 2012-12-26 08:54:06 | 显示全部楼层
回复 1# xychzkhf


    用eval加上指令做其参数,man一下其用法。
注意其后参数字符串中反斜杠转义的使用。
 楼主| 发表于 2012-12-26 23:12:04 | 显示全部楼层
回复 2# sjtusonic


    愿闻其详~~~~
发表于 2012-12-27 08:44:53 | 显示全部楼层
本帖最后由 sjtusonic 于 2012-12-27 08:50 编辑

回复 3# xychzkhf


#a-----------------------------------------------------------
set infile [open "file.txt" "r"];
while {[gets $infile Op]>=0} {
      
set Operation "expr $Op";
  #set Result [eval $Operation];#这个就可以,他支持多次!
  set Result [$Operation];#实践证明,一次翻译不行

  puts stdout "$Op=$Result\n";
}
#3-------------------------------------------

file.txt:

1+2
4+5
7-9



这是一个读入文本中每行的算式,并计算结果的程序。字符串$operation每次循环的值都不同,用eval执行$operation里面存储的命令
 楼主| 发表于 2012-12-27 14:17:52 | 显示全部楼层
回复 4# sjtusonic


    那上面的程序是否改成这个样子
set operation "lindex $a $c"
regexp  {^\s+[eval $operation].* }  [read [open fifo.v r]]
??
或者直接这样
regexp  {^\s+[eval [lindex $a $c]].* }  [read [open fifo.v r]]是否可行呢?
发表于 2012-12-27 17:01:31 | 显示全部楼层
本帖最后由 sjtusonic 于 2012-12-27 17:42 编辑

回复 5# xychzkhf


    你试试看呗,如果有问题的话,建议把eval套在最外层再试试。
 楼主| 发表于 2012-12-27 22:42:29 | 显示全部楼层
回复 6# sjtusonic


    悲剧这样活着eval放在外面都不行啊~~~
发表于 2012-12-28 10:06:00 | 显示全部楼层
回复 7# xychzkhf


    这样是可以的:
set v 123
eval "regexp \{^\\s+$v\} \"      12345678\""

你仔细看看 \ 的加法,搞清楚哪些地方该加哪些地方不加。
 楼主| 发表于 2012-12-29 01:31:58 | 显示全部楼层
回复 8# sjtusonic


    大神,搞定了,呵呵是这样的[regexp [eval set pattern {.*[lindex $lib $b].*}]] [read [open [lindex [split "[glob *.v *.vhd]"] $nc] r]]
发表于 2012-12-29 09:26:08 | 显示全部楼层
回复 9# xychzkhf


    eval set pattern 这段是什么个思路? 看不明白了。

你查的哪些资料?跟大家分享一下呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 01:34 , Processed in 0.021824 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表