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

Posted

技术标签:

【中文标题】在 Eclipse 中用正则表达式替换多行搜索【英文标题】:Multiline search replace with regexp in Eclipse 【发布时间】:2013-05-18 06:17:43 【问题描述】:

Eclipse 正则表达式搜索效果很好,例如在搜索框中我有这个:

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

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

在 Vim (Gvim, Macvim) 中它工作得很好,保留了所有的空格;我怎样才能在 Eclipse 中做同样的事情?

【问题讨论】:

***.com/questions/4154239/… 谢谢,但这更多是关于多行搜索,由我已经做过的 dotall 标志或 (?s) 启用。请注意,搜索部分有效,多行替换无效 @codegood 经过大量研究后,我发现您可以使用基于文件的搜索框进行多行替换。 “编辑器”替换(在查找弹出框中)失败的事实没有任何迹象表明我认为这是一个 Eclipse 错误,我必须找出是否必须为其创建错误报告...... @MaartenBodewes - 您是否为此创建或找到了错误报告? @DanielSokolowski 我不记得我是否有时间进一步研究这个问题。我当然没有提交错误报告。 【参考方案1】:

要在 Eclipse 中搜索多行,必须在搜索表达式中使用 's' 参数:

(?s)someExpressionToMatchInAnyLine

要替换为多行 exp,您必须使用 \R 即:

line1\Rline2\Rline3

这会将匹配的 exp 替换为: 第1行 第2行 第3行

【讨论】:

附加信息:?s 是Java regex implementation 的一个特性,被称为“嵌入式标志表达式”。我强烈怀疑其他标志表达式也可以在 Eclipse 搜索对话框中使用。【参考方案2】:

一般来说,我做这类事情的方法是输入我想用作替换的内容,选择它,打开“查找/替换”对话框,然后复制“查找”文本框的内容.我从那里开始并将我复制的内容粘贴到替换文本框中。还有一些工作要做(删除不适用于替换框的正则表达式特殊字符前面的反斜杠),但它帮了我一把。

【讨论】:

以上是关于在 Eclipse 中用正则表达式替换多行搜索的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript正则表达式修饰符

如何使用正则表达式在 Intellij IDEA 中用小写替换大写?

43 正则中用sub和subn函数搜索与替换 使用split函数分隔字符串 练习题

正则表达式中的 Eclipse 更改案例查找和替换

在 Python 中用正则表达式替换

JavaScript 正则表达式