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”中的破折号

我如何专门删除两边被数字包围的破折号?我的正则表达式知识非常少,我试图找到[0-9]-[0-9]并替换,[0-9][0-9]但没有奏效。

4

3 回答 3

2

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

替换正则表达式:

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

替换为 tab( \t)。

于 2014-02-28T16:11:00.060 回答
0

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

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

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

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

\1\t\2

这里\1指的是第一组(所以是第一个数字),\2是指第二​​组(所以是第二个数字)。

于 2014-02-28T16:11:21.293 回答
0

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

$ sed 's/\d-\d/\d\d/g' a.txt > b.txt
于 2014-02-28T16:12:44.433 回答