我需要幫助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) –