English 中文(简体)
我寻找一个应用程序/文本编辑器(关闭)
原标题:
  • 时间:2009-04-15 01:47:03
  •  标签:

我们不允许问题寻求建议书籍、工具、软件图书馆等等。您可以编辑的问题,因此它可以回答与事实和引用。

Closed 7 years ago.

最好能帮我系统地修改正则表达式搜索的“替换”字段中遇到每一场比赛。

例如,我有一个xml文件,需要“id = $号”这个词在文本中插入在普通点,基本上,美元数量+ +每次正则表达式匹配(id = 1, id = 2,等等)到文件的末尾。

我知道我可以写一个bash / perl / python脚本或一些这样的,但我想至少中度用户友好的,这样我就可以教我聪明(但技术含量少)工人如何使用它,让自己的修改。正则表达式对他们不是问题。

最近的我来了到目前为止是记事本+ + s[数字]列编辑器和增加功能,但是这个我必须写一个单独的正则表达式使一切,添加增量,然后编写另一个把东西还回去。不幸的是,我需要使用这个函数在很多不同类型的文件和替换宏可行的年代。

理想情况下,程序也可用于Windows和Linux(更喜欢葡萄酒是可以接受的但本地),和有一个VI / VIM输入选项(如果它年代一个文本编辑器),但这些都是次要的。

Of course, it d be nice if there is an OSS solution, and I d be glad to donate $20-$50 to the developer(s) if it provides the solution I m looking for.


Apologies for the length, and thanks so much for your help!

最佳回答

emacs(22和更高版本)可以做你想要的。看到< a href = " http://steve yegge.blogspot.com/2006/06/shiny -和-新- emacs - 22. - html”rel = " nofollow noreferrer " > Steve Yegge年代博客< / >一个很有趣的阅读。我认为这应该工作:

M-x replace-regexp
  Replace regexp: insert pattern regexp here
  Replace regexp with: id = #

<代码> # < /代码>是一个特殊的元字符,取而代之的是替代品的总数发生到目前为止,从0开始。如果你想要开始从1列表而不是0,使用下面的替换字符串:

id = ,(1+ #)
问题回答

JEdit can probably help you: http://www.jedit.org/

你可以做各种各样的正则表达式,甚至bean结果基于取代。

< a href = " http://www.ultraedit.com/ " rel = " nofollow noreferrer " > UltraEdit32 < / >是伟大的,我相信有你所需要的功能。有一个免费的30天下载,这样你就可以确保。:)

我知道你想要一个应用程序可以在Windows / Linux,但有另一个解决方案在Mac: < a href = " http://www.barebones.com/products/textwrangler/ " rel = " nofollow noreferrer " > TextWrangler < / >,和它年代自由。

看看< a href = " http://www.ultraedit.com/ " rel = " nofollow noreferrer " > UltraEdit32 < / >。这非常好。不是免费的,但是可以在Windows、Linux和Mac平台。基于正则表达式的搜索和替换。

这个< a href = " http://www.vim.org/scripts/script.php?script_id = 1199 " rel = " nofollow noreferrer " > < / >脚本应该让你做你想做的事情在< a href = " http://www.vim.org " rel = " nofollow noreferrer " > Vim < / >。

Vim函数可以用数量递增的方法和不太难写。例如< a href = " http://vim.wikia.com/wiki/VimTip971 " rel = " nofollow noreferrer " > 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 +  " }

Or Perl:

:perl $c=1
:perldo s/<w+/$& .   id="  . $c++ .  " /eg

对我来说,这听起来像是为awk它可能是一份工作,而不是一个编辑的工作。





相关问题
热门标签