tcl脚本中的regexp

时间:2017-04-17 08:15:58

标签: regex tcl

我需要tcl regexp的帮助。假设我的文件名为

abc1_vv24_0.099B_0.00h_2ru.tar.gz 
abc1_vv24_0.099B_0.00h_2ru.gz 
  1. 我想在

    的单一命令中分开如下
    abc1 vv24 0.099B 0.00h 2ru tar.gz or gz
    
  2. 我需要在单个命令中为两个文件单独添加扩展

    tar.gz or gz
    

2 个答案:

答案 0 :(得分:0)

对于第一部分,您可以使用:

/[^_]+/g

这将允许您将字符串拆分为子字符串

Demo

第2部分Demo

/(?:\.tar)?.\w+$/gm

由于.099B_0.00h_2ru.gz是实际的扩展名

,因此有点棘手

答案 1 :(得分:0)

第一步是使用split将拆分字符集设为下划线。然后,您可以在最终元素上使用简单的regexp来提取扩展名:

set filename "abc1_vv24_0.099B_0.00h_2ru.tar.gz" 

set pieces [split $filename "_"] 
regexp {([^.]*)\.(.*)} [lindex $pieces end] -> bit ext
# Put the bit before the extension back in the list
lset pieces end $bit

puts $pieces
puts $ext

请记住,在Tcl中,您应该始终将正则表达式放在大括号中。它可以在最少使用反斜杠的情况下阻止不必要的语法问题。