删除两侧数字包围的破折号

时间:2014-02-28 16:06:53

标签: regex textwrangler

我正在尝试使用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”中的破折号

我如何专门删除双方数字包围的破折号? 我的正则表达式知识非常小,我试图找到[0-9]-[0-9]并替换为[0-9][0-9],但这不起作用。

3 个答案:

答案 0 :(得分:2)

您的链接显示“ PCRE引擎(Perl兼容的正则表达式)是BBEdit和TextWrangler使用的”。所以希望你可以在你的正则表达式中使用lookaround。

替换正则表达式:

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

替换为制表符(\t)。

答案 1 :(得分:0)

您实际上需要捕获所需的数字。所以正则表达式将是:

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

我在这里假设数字从行的开头开始。如果没有,您可以删除^

根据您的链接,正则表达式的风格是PCRE,因此反向引用在替换模式中看起来像\1\2。所以你的替换模式就变成了:

\1\t\2

此处\1指的是第一个组(所以第一个数字),\2指的是第二个组(所以第二个数字)。

答案 2 :(得分:0)

如果是纯文本,不确定是否需要TextWrangler。你可以使用unix的“sed”命令:

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