使用变量我有结构类似于字符串列表:正则表达式中
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