2012-11-06 91 views
1

我有一個表達式,如/a/b/c.d/f. 我需要/.之間的所有字符。當我試圖使用split命令分割它們時,我得到的結果爲{} a b c d f {}。我怎樣才能避免這些空字符串?有沒有辦法使用regsub來完成這件事?需要指導處理空字符串

+0

一些真實的例子?在'/'和'.'之間有很多可能性。 –

+0

表達式類似於/name1/name2.name3/name4。「我之間有很多」。「和」/「,如果我使用split,我會得到一個空字符串作爲前導和尾隨的」/「或」。「命令 –

+0

這並不是一個例子給你想要什麼輸入和輸出輸入 –

回答

3

那些空字符串(他們空值)是說有字符串的開始和結束分離。如果你有兩個彼此相鄰的分隔符,你也可以得到它們; split命令真正面向處理記錄,而不是更「普通」的文本。

一個提取非分隔件最簡單的方法(注意:我翻就在這裏發揮得淋漓盡致的問題)是使用regexp -all -inline,這將返回所有匹配的事情的清單:

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

要小心一點:如果你有捕獲子正則表達式,當你使用-all -inline選項時,它們也會被返回。

0

使用regsub我得到了所需的結果。 是 「regsub - 所有{(/)|()} $ A 」\ t「 的結果」 這並沒有給我提供任何空字符串