Eclipse使用正则表达式替换整行

5
我是使用Eclipse的查找/替换功能来将一些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中运行良好。


你能使用^$来匹配空行吗?在这种情况下,你可以使用^$|^(.*)$。 - Lauri
不,那行不通。虽然是个好主意。 - Craig
1个回答

5

我认为这是Eclipse的一个bug。不过,我在Eclipse Juno中使用了搜索模式来实现您所需的结果:

(.*)\R

并且需要一个替换字符串:

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

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

我也在使用Juno,对我来说也很好用。不过你说得对,这是个bug。它应该可以在没有换行符\R的情况下工作。我想等我有时间的时候会尝试报告这个问题。非常感谢你的回答。 - Craig

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