我正在尝试使用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]
,但这不起作用。
答案 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