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



我正在尝试使用TextWrangler中的正则表达式进行搜索和替换(https://gist.github.com/ccstone/5385334,http://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]替换,但这不起作用。

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

替换正则表达式:

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

替换为制表符( t )。

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

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

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

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

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

根据您的链接,正则表达式的风格是 PCRE,因此反向引用看起来像 1 ,并且在替换模式中2。因此,您的替换模式只需变为:

1t2

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

最新更新