Eclipse 用正则表达式查找/替换整行

Posted

技术标签:

【中文标题】Eclipse 用正则表达式查找/替换整行【英文标题】:Eclipse Find/Replace Whole Line With Regex 【发布时间】:2012-09-30 15:47:36 【问题描述】:

我正在使用 Eclipse 的 Find/Replace 将一些 sql 代码格式化为 Java 字符串。我想将sql查询的每一行放在引号之间,并在末尾添加一个换行符。

这是我在查找字段中输入的内容:

(.*)

这是我在替换字段中输入的内容

\t\t+ "\1\\n"

这里是一个简单的例子(我实际的sql查询大约200行)

SELECT *

FROM User
WHERE User.Id = 1232164

这就是我希望在之后看到的

    + "SELECT *\n"
    + "\n"
    + "FROM User\n"
    + "WHERE User.Id = 1232164\n"

但是,当遇到表示没有更多匹配结果并终止的空行时,查找失败(如果标记了“环绕搜索”选项,则跳转到文件顶部)

我也尝试在查找正则表达式中使用以下内容

^(.*)
^(.*)$

结果相同

任何人都知道我做错了什么,或者这可能是 Eclipse 中的错误。

就其价值而言,它在 Emacs 中运行良好,就像我最初编写的那样。

【问题讨论】:

你能用 ^$ 来匹配空行吗?在这种情况下,您可以使用 ^$|^(.*)$ 不,这行不通。好主意。 【参考方案1】:

我觉得它是 Eclipse 中的一个错误。不过,我已经通过使用搜索模式实现了您想要的结果(在 Eclipse Juno 中):

(.*)\R

和一个替换字符串:

\t\t+ "\1\\n"\R

请注意,\R 是一种特殊的 Eclipse 模式,可在搜索时匹配任何形式的行分隔符。替换时,它会插入文档的默认行分隔符。

【讨论】:

我也在使用 Juno,它也适用于我。不过你是对的,它是一个错误。它应该在没有行分隔符 \R 的情况下工作。我想我会在有时间的时候尝试报告它。非常感谢您的回答。

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

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

eclipsemyeclipse中删除所有注释正则表达式

sed / awk 匹配文件中第二次出现的正则表达式,并替换整行

正则表达式查找匹配后如何替换?

教你notepad++用正则表达式替换掉各行逗号前面内容

正则表达式用 n替换^ M或删除^ M.