我有一些格式为
的字符串class(amber#good)
class(Back1#notgood)
class(back#good)
,我想使用regexp来获取这些字符串
的值预期回答:
amber
Back1
back
下面是cmd:
set string "class(amber#good)"
regexp -all {^\([a-zA-z_0-9].#$} $string $match
puts $match
但答案不是我想要的
可以使用
regexp {(([^()#]+)} $string - match
查看在线Tcl演示。
(([^()#]+)
正则表达式匹配
(
- a(
char([^()#]+)
-捕获组1 (match
):除括号和#
以外的任何一个或多个字符。
使用连字符,因为不需要完整匹配值,我们只对获得第一组值感兴趣。
有时使用正则表达式容易出错和/或过度使用。
下面是使用split的另一个答案:
lindex [split $string "()#"] 1