在Eclipse中使用正则表达式进行多行搜索和替换

21

Eclipse正则表达式搜索功能非常好用,例如在搜索框中可以输入以下内容:

(?s)(myMethod.*?;)\}\);

现在我想在IDE和替换框中复制多行文本,例如我想要粘贴\1PASTE_MULTILINE_TEXT_HERE。但是Eclipse不允许我直接复制粘贴多行文本,需要手动插入换行符。

在Vim(Gvim,Macvim)中,它可以完美地工作,保留所有空格;我应该如何在Eclipse中做同样的事情?


https://dev59.com/NW855IYBdhLWcg3wxHYq - Sean F
1
谢谢,但那更多是关于多行搜索的内容,需要启用点号匹配所有标志或(?s),我已经做到了。请注意,搜索部分是有效的,但多行替换无效。 - codegood
经过一番深入的研究,我发现您可以使用基于文件的搜索框来进行多行替换。在查找弹出框中,“编辑器”替换失败且没有任何指示,我认为这是Eclipse的一个bug,我需要找出是否需要为此创建一个bug报告... - Maarten Bodewes
@MaartenBodewes - 你是否已经创建或找到了这个问题的错误报告? - Daniel Sokolowski
@DanielSokolowski 我无法完全记得是否有时间进一步研究这个问题。我肯定没有提交错误报告。 - Maarten Bodewes
2个回答

36

在Eclipse中搜索多行文本,必须在搜索表达式中使用“s”参数:

(?s)someExpressionToMatchInAnyLine

如果要替换多行表达式,您必须使用\R,如下所示:

line1\Rline2\Rline3

这将用以下内容替换匹配的表达式:
行1
行2
行3


1
附加信息:?sJava 正则表达式实现 的一项功能,被称为“嵌入标志表达式”。我强烈怀疑其他标志表达式也可以在 Eclipse 搜索对话框中使用。 - Lii

4

通常,我处理这类事情的方法是先打出要替换的内容,然后选中它,打开查找/替换对话框,复制查找文本框中的内容。接下来,我将复制的内容粘贴到替换文本框中。还有一些工作需要完成(删除在替换框中不适用的正则表达式特殊字符前面的反斜杠),但这可以为我提供帮助。


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