1

I have an expression like /a/b/c.d/f. I need all the characters in between / or .. When I tried to split them using split command, I am getting the result as {} a b c d f {}. How can I avoid these null strings? Is there a way to get this done using regsub?

4

3 回答 3

3

那些空字符串(它们不是空值)表示字符串的开头和结尾有分隔符。如果你有两个相邻的分隔符,你也会得到它们;该split命令实际上面向处理记录,而不是更“普通”文本中的单词。

提取非分隔符部分的最简单的方法之一(注意:我已经在它的头上翻转了问题)是使用regexp -all -inline,它将返回所有匹配事物的列表:

set pieces [regexp -all -inline {[^/.]+} "/a/b/c.d/f."]

对此要稍微小心:如果您有捕获子正则表达式,它们也会在您使用-all -inline选项时返回。

于 2012-11-06T21:41:43.440 回答
0

使用 regsub 我得到了所需的结果。它是 "regsub -all {(/)|(.)} $a "\t" result" 这没有为我提供任何空字符串

于 2012-11-06T20:02:42.350 回答
0

我做了两种不同的方法:

  1. 匹配并保存它们
  2. 更换它(不完全是 tcl)

我希望它对你有点帮助,如果你想添加大写,A-Z也可以使用。

于 2012-11-06T20:18:34.920 回答