2014-02-28 46 views
0

我試圖尋找和使用的TextWrangler正則表達式替換包圍破折號(https://gist.github.com/ccstone/5385334http://www.barebones.com/products/textwrangler/textwranglerpower.html刪除由數字兩側

我有這樣

56-84 29 STRINGOFLETTERS -2.54 

我倒是行要替換儀表板中的「56-84」有標籤,所以我得到

56 84 29 STRINGOFLETTERS -2.54 

但是,如果沒有在「-2.54」

012更換破折號

我該如何專門刪除雙方數字包圍的破折號? 我的正則表達式知識非常小,我試圖找到[0-9]-[0-9]並用[0-9][0-9]替換,但那沒有奏效。

回答

3

您的鏈接顯示「PCRE引擎(Perl兼容正則表達式)是BBEdit和TextWrangler使用的」「。所以希望你可以使用lookaround和你的正則表達式。

替換正則表達式:

(?<=\d)-(?=\d) 

替換標籤(\t)。

+0

感謝您的回覆。工作很好 – Johan

1

你實際上需要捕捉你想要的數字。所以正則表達式是:

^([0-9])-([0-9]) 

我在這裏假設數字在行首開始。如果沒有,您可以刪除^

根據您的鏈接,正則表達式的風格是PCRE,所以反向引用看起來像替換模式中的\1\2。所以,你的替換模式可以簡化爲:

\1\t\2 

這裏\1指的是第一組(所以第一個數字)和\2指的是第二組(所以第二個數字)。

+0

感謝您的回覆。 ^([0-9]) - ([0-9])在沒有/的情況下爲我工作。太糟糕了,我不能提供超過一個答案。 – Johan

1

如果是純文本,不確定是否需要TextWrangler。您可以使用unix的「sed」命令:

$ sed 's/\d-\d/\d\d/g' a.txt > b.txt 
+0

感謝您的回覆。我忘了提及我已經使用TextWrangler以其他方式處理文件,並且我只想用一個程序處理所有事情。 – Johan