使用變量我有結構類似於字符串列表:正則表達式中
C:/Users/scott-filter1.pgm C:/Users/scott-filter2.pgm C:/Users/scott-filter3.pgm
從本質上講,我想要做的是去除C:/Users/scott-
和.pgm
留下我只filter1
例如。
所以,這是我的正則表達式:
regsub -nocase {.pgm} [regsub -nocase {C:/Users/scott-} $list ""] ""
的正常工作,雖然有點麻煩。現在,當我用包含變量的正則表達式替換內部正則表達式時,例如:
set myname scott
{C:/Users/$myname-}
它不再有效。關於如何實現我想實現的任何想法?
謝謝!
我遇到的唯一問題是,它包含超過100項的列表。對我來說,它將整個列表視爲一個字符串,從第一個條目中刪除'「C:/ Users/$ myname-」',從最後一個條目中刪除'「.pgm」'。我只是有一個簡單的'foreach'循環來處理每個條目。謝謝! – 2014-08-27 17:16:39
@ScottJamesWalter啊,我沒有想到'$ list'是一個*實際*列表!你的所有字符串都是相同的格式嗎? (即像'C:/ Users/$ myname- {something here} .pgm',其中'$ myname'和'{here here}'不能包含短劃線/連字符)。如果是這樣,你可以使用一個單一的正則表達式:'set results [regexp -all -inline - {[^ - ] +(?= \。pgm)} $ list]'並且一次接收所有的正則表達式。 – Jerry 2014-08-27 17:21:57
這工作非常出色!再次感謝你! – 2014-08-27 17:46:49