私はtcl regexpに関する助けが必要です。私は拡張子は両方のファイルのための単一のコマンドで区切る取得する必要がありtclスクリプトのregexp
abc1 vv24 0.099B 0.00h 2ru tar.gz or gz
のために単一のコマンドで以下のように分けたい
abc1_vv24_0.099B_0.00h_2ru.tar.gz
abc1_vv24_0.099B_0.00h_2ru.gz
として、私は、ファイル名があるとし
tar.gz or gz
私はtcl regexpに関する助けが必要です。私は拡張子は両方のファイルのための単一のコマンドで区切る取得する必要がありtclスクリプトのregexp
abc1 vv24 0.099B 0.00h 2ru tar.gz or gz
のために単一のコマンドで以下のように分けたい
abc1_vv24_0.099B_0.00h_2ru.tar.gz
abc1_vv24_0.099B_0.00h_2ru.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-does-x -questions-be-closed/285739#285739)2ru.tar.gzの代わりに –