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 用正则表达式查找/替换整行的主要内容,如果未能解决你的问题,请参考以下文章