我需要帮助tcl正则表达式。假设我有一个文件名作为tcl脚本中的正则表达式
abc1_vv24_0.099B_0.00h_2ru.tar.gz
abc1_vv24_0.099B_0.00h_2ru.gz
我想单独象下面这样一个命令
abc1 vv24 0.099B 0.00h 2ru tar.gz or gz
我需要扩展在单个命令分隔为两个文件
tar.gz or gz
我需要帮助tcl正则表达式。假设我有一个文件名作为tcl脚本中的正则表达式
abc1_vv24_0.099B_0.00h_2ru.tar.gz
abc1_vv24_0.099B_0.00h_2ru.gz
我想单独象下面这样一个命令
abc1 vv24 0.099B 0.00h 2ru tar.gz or gz
我需要扩展在单个命令分隔为两个文件
tar.gz or gz
第一步是使用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应该始终把正则表达式中的括号。它通过最小化反斜杠来阻止不需要的语法问题。
非常感谢你:) – Krishh
Se [应该“给我一个X的正则表达式”问题关闭吗?](http://meta.stackoverflow.com/questions/285733/should-give-me-a-regex-that-doesx -questions-be-closed/285739#285739) –