我正在尝试使用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
指的是第二组(所以第二个数字)。