我正在從文件中獲取節點座標。不幸的是,小號碼使用以下格式:使用format或regexp將-3.014-5轉換爲科學格式-3.014e-5
-3.014-5
沒有一個「e」 - > -3.014e-5
我不能使用的格式,因爲所有我發現功能需要一個浮點編號,其中以上不是... 所以我想用正則表達式來找到「-5」部分,並將其替換爲「e-5」。 ([+ - ]?[0-9] +)?$會這樣做,但我如何在TCL中使用該表達式?
set num -3.014-5
set Enum [ regexp -all { ([+-]?[0-9]+)?$ } $num ]
我得到「無效的命令名稱‘+ - ’,所以我改爲方括號」,但後來我得到1作爲一個答案。我究竟做錯了什麼?
請原諒我對於正則表達式的笨拙,這不是我平常的操場。我已經通過創建這個proc來解決它:proc MakeE {In} {tail} {regsub {^([+ - ]?[。0-9] +)([+ - ]?[0-9] +)?如果{$ Tail!=「」} {} {regsub {^([+ - ]?[。0-9] +)([+ - ]?[0- 9] +)?$} $ In {\ 1e \ 2}] return $ Out } return $ In }如何直接在正則表達式中包含這個「If tail!=」「」? – Lumpi
如果您希望輸入數字在沒有*尾*的情況下保持不變,您可以簡單地從正則表達式的尾部刪除問號 - 因此表達式不匹配,數字將不會更改。 – bmk
非常感謝! – Lumpi