我在Notepad ++中有一个来自SQL Server的大查询(1012行),我想将此查询仅传递给一行。例如,我有这个:
SELECT *
FROM tableA
WHERE Field_A = 1
我想传递给这个:
SELECT * FROM tableA WHERE Field_A = 1
我正在尝试以下代码:
(\h*\R)+
\x20
但这正在为我创建更多的新行,并且代码之间有很大的间隔。
我该怎么做?
答案 0 :(得分:3)
您必须在换行符后删除空格,使用此正则表达式(?:\h*\R\h*)+
(?:\h*\R\h*)+
A SINGLE SPACE
说明:
(?: : start non capture group
\h* : 0 or more horizontal spaces
\R : any kind of linebreak (ie. \r, \n, \r\n)
\h* : 0 or more horizontal spaces
)+ : end group, repeated 1 or more times
替换:
A single space
给出如下示例:
SELECT *
FROM tableA
WHERE Field_A = 1
给定示例的结果
SELECT * FROM tableA WHERE Field_A = 1
答案 1 :(得分:0)
您应该可以将行末的\r\n
替换为一个空格。请注意,如果您使用的是Linux,行尾仅为\r
,则我将\n
设为可选。
查找:
\r?\n
替换:
[single space]
这将确保前一行的末尾与当前行的开头之间至少有一个空格。多余的空格不应导致对SQL查询的解析不正确。
答案 2 :(得分:0)
1. Open the Replace dialog ( Ctrl + H )
2. Check the Wrap around option
3. Choose the Extended search mode
4. Fill in the regex \r\n in the Find what: zone
5. Put one white space in the Replace with: zone
6. Click on the Replace All button
根据您的换行约定,第4步可能是:
4bis. Fill in the regex \n in the Find what: zone
您可以使用来显示换行符:
View -> Show symbols -> Show end of lines
。
如果显示CRLF
,则执行步骤4将回答您的问题。如果看到LF
,则需要执行步骤4之二。
如Tim Biegeleisen所建议,您还可以使用正则表达式搜索模式(步骤3)并填写正则表达式\r?\n
。这一次可以完成。