多行正则表达式搜索和替换!

28

我遇到了瓶颈。有人知道一个好的文本编辑器,像Notepad++一样具有搜索和替换功能,但也可以进行多行正则表达式搜索和替换吗?基本上,我正在寻找能够匹配正则表达式的东西,例如:

搜索oldlog\(.*\n\s+([\r\n.]*)\);
替换newlog\(\1\)

有什么建议吗?


这个问题怎么可能有那么多的浏览量,却只有那么少的赞数呢? - axiopisty
14个回答

10

Notepad++现在可以处理多行正则表达式(只需升级到最新版本-该功能是在2012年3月左右引入的)。

我需要从HTML文档中删除所有的onmouseout和onmouseover语句,并且我需要创建一个非贪婪的多行匹配。

onmouseover=.?\s*".*?"

如果您想使用多行匹配能力,请确保勾选:

[ ] .匹配换行符
复选框。


8

EditPad Pro比我用过的其他任何编辑器都具有更好的正则表达式功能。

此外,我怀疑您的正则表达式中存在错误——[\r\n.]只会匹配回车、换行和句号。如果您想匹配任何字符(即“点操作符加CR和LF”),请改用[\s\S]


@BenBlank 很抱歉要让你回到这个问题,我遇到了这个问题。为什么 [\r\n.] 不能匹配点运算符加上 CR 和 LF? - Max Burns
1
@Padenton - 大多数运算符不适用于字符类。例如,[.()+?*]将精确匹配这些字符而没有任何特殊行为。请查看此处的“字符类中的元字符”以获取更多信息:http://www.regular-expressions.info/charclass.html。 - Ben Blank

5

我使用免费的Eclipse,如果您是开发人员,则可能已经拥有它。 '\R'作为平台无关的行分隔符。以下是多行搜索的示例:

搜索:

\bibitem.(\R.)?\R?{([^{])}$\R^([^\].[^}]$\R.$\R.)

替换:

\defcitealias{$2}{$3}


1
太棒了,我不知道\R,你在哪里找到的?! - HaveAGuess
必要性是发明的母亲!;) - Vladtn

5

我相信Notepad++现在可以通过默认包含的TextFX插件实现这一点。 在Notepad ++中按Control-R并尝试一下。


8
我无法理解如何进行多行搜索。 - Moss
顶部文本框是您要查找的内容。底部文本框是您想要替换的内容。单击“查找”,然后单击“替换所有”。 - GuiSim

5
我的个人推荐是IDM Computing的UltraEdit (www.ultraedit.com) - 它可以使用Perl、Unix和UltraEdit语法进行正则表达式(搜索和替换)。在Perl正则表达式模式中,多行匹配是其中的一种能力。
它还具有其他不错的搜索功能(例如,搜索特定字符列范围、搜索多个文件、搜索历史记录、搜索收藏等...)。

alt text
(来源: ultraedit.com)


7
价值50美元的编辑器几乎不能替代Notepad++。它可能有很多功能,如FTP客户端或CSS验证,但如果我不需要它们,那还有什么好处呢? - Malcolm
4
@Malcolm - 对我来说,这是值得的。对于很多人来说也是值得的,因为那个制作它的人仍然在生意上 :) 此外,OP从未要求“免费更换”。他询问有哪些编辑器可以替代并具有某种功能。 - DVK
在被迫使用Notepad++(由于公司政策,新员工无法安装UltraEdit,而我正在帮助她)之后,我必须说它缺少太多我认为在编程编辑器/IDE中基本和非常有用到必要的东西。有时免费就像啤酒一样是好的。有时你付出什么就得到什么 :) - DVK
很抱歉打破好玩的氛围,但UE在其正则表达式引擎方面存在一些严重缺陷,特别是涉及多行字符串时。例如,回顾操作不能跨越换行符工作。 - Tim Pietzcker
@DVK:我没有一个缺陷清单。我只是一次又一次地注意到,在EPP或RegexBuddy中正则表达式可以很好地工作,但在UE中却会出现奇怪的结果。最近的例子:http://www.ultraedit.com/forums/viewtopic.php?f=8&t=9417#p33582(也是后顾查找的一个例子)。 - Tim Pietzcker
显示剩余4条评论

5

Zeus编辑器可以进行多行搜索和替换。


4

TextPad 拥有出色的正则表达式搜索和替换功能;我使用它已经一段时间了,感觉非常满意。

TextPad screenshot

来自功能:

使用类UNIX正则表达式的强大搜索/替换引擎,具有编辑器宏的功能。可以搜索目录树中的文件集,并可一次性在所有打开的文档中替换文本。

如需更多选项,请查看Notepad++替代方案,请访问AlternativeTo.net


你真的测试过搜索/替换吗? - LeonardChallis

2

2
我一直都使用Notepad++,但它的正则表达式功能一直有点不足。

Sublime Text是你想要的东西。


1

EditPlus在使用正则表达式进行搜索/替换方面(包括多行)做得很不错。


1
介意解释一下如何操作吗?谢谢。 - DrLightman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接