可以帮助我系统地修改正则表达式搜索的“替换”字段,因为它遇到每个匹配。
例如,我有一个xml文件,需要在文本的常规点插入短语“id = $ number”,基本上,每次正则表达式匹配时,$ number ++(id = 1,id = 2等)直到文件结束。
我知道我可以写一个bash / perl / python脚本或其他类似的东西,但我希望它至少适度用户友好,所以我可以教我的智能(但技术上不太倾向)的工作者如何使用它并进行自己的修改。 Regexing对他们来说不是问题。
我到目前为止最接近的是Notepad ++的列编辑器和'增加[数字] by'函数,但是我必须编写一个单独的正则表达式来对齐所有内容,添加增量,然后写另一个来放置它背部。不幸的是,我需要在太多不同类型的文件上使用此函数,并且'替换'以使宏可行。
理想情况下,该程序也适用于Windows和Windows。 Linux(WINE是可以接受的,但原生是首选),并且有一个'VI / VIM输入'选项(如果它是文本编辑器),但这些是次要的。
当然,如果有一个OSS解决方案会很好,如果它能提供我正在寻找的解决方案,我很乐意向开发者捐赠20到50美元。
道歉,并非常感谢你的帮助!
答案 0 :(得分:8)
emacs(版本22及更高版本)可以满足您的需求。请参阅Steve Yegge's blog以获取有关它的真正有趣的读物。我认为这应该有效:
M-x replace-regexp Replace regexp: insert pattern regexp here Replace regexp with: id = \#
\#
是一个特殊的元字符,它被目前为止发生的替换总数所取代,从0开始。如果您希望列表从1开始而不是0,请使用以下替换字符串:
id = \,(1+ \#)
答案 1 :(得分:2)
JEdit可能会帮助你: http://www.jedit.org/
你可以做各种正则表达式甚至bean结果替换它。
答案 2 :(得分:1)
UltraEdit32很棒,我相信它具备您需要的功能。有30天免费下载,所以你可以确定。 :)
答案 3 :(得分:1)
我知道您希望在Windows / Linux上提供应用程序,但Mac上还有另一种解决方案:TextWrangler,它是免费的。
答案 4 :(得分:0)
看看UltraEdit32。这很好。不是免费的,但可以在Windows,Linux和Mac平台上使用。它有基于正则表达式的搜索&取代
答案 5 :(得分:0)
答案 6 :(得分:0)
Vim函数可以执行递增数字技巧并且不太难写。例如,Vim wiki说明了如何执行此操作。另请参阅:h sub-replace-\=
。
function! Counter()
let i = g:c
let g:c = g:c + 1
return i
endfunction
:let c=1|%s/<\w\+\zs/\=' id="' . Counter() . '"'/g
我们可能已经远远落后于用户友好性,但Vim的Ruby支持也可以轻松地做到这一点:
:ruby c=0
:rubydo $_.gsub!(/<\w+/){|m| c += 1; m + ' id="' + c.to_s + '"'}
或Perl:
:perl $c=1
:perldo s/<\w+/$& . ' id="' . $c++ . '"'/eg
答案 7 :(得分:0)
对我而言,听起来这可能是awk的工作,而不是编辑的工作。