我的表达式为/a/b/c.d/f.
我需要/
或.
之间的所有字符。当我尝试使用split
命令拆分它们时,我得到的结果为{} a b c d f {}
。我怎样才能避免这些空字符串?有没有办法使用regsub
完成此操作?
答案 0 :(得分:3)
那些空字符串(它们不为空)表示在字符串的开头和结尾有分隔符。如果你有两个彼此相邻的分隔符,你也会得到它们; split
命令实际上是针对处理记录而不是处理更“普通”文本中的单词。
提取非分隔符部分的最简单方法之一(注意:我在这里解决了问题)是使用regexp -all -inline
,它将返回所有匹配内容的列表:< / p>
set pieces [regexp -all -inline {[^/.]+} "/a/b/c.d/f."]
要小心:如果你有捕获子regexp,那么当你使用-all -inline
选项时也会返回它们。
答案 1 :(得分:0)
使用regsub我得到了所需的结果。 它是“regsub -all {(/)|(。)} $ a”\ t“结果” 这没有提供任何空字符串
答案 2 :(得分:0)
我做了两种不同的方式:
我希望它能帮到你一点点,如果你想添加大写字母,也可以使用A-Z
。