TCL如何使用regexp拆分字符串



我有一些格式为

的字符串
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

最新更新