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

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

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

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

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

【问题讨论】:

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

标签: regex eclipse search replace


【解决方案1】:

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

(?s)someExpressionToMatchInAnyLine

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

line1\Rline2\Rline3

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

【讨论】:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    相关资源
    最近更新 更多