Regex 使用记事本删除包含段落的文本文件中的最后一个空行++;

Regex 使用记事本删除包含段落的文本文件中的最后一个空行++;,regex,notepad++,Regex,Notepad++,如何使用Regx和notepad++从以下示例中删除最后一个空行 qwerty asdfgh <blank line> zxcvbn poiuyr <last blank line> qwerty asdfgh ZxCVN 波伊尔 文本示例包含文本块之间的空行 我认为“lookaround”regx可能有效,例如:(?s)(?=.*)\n但它似乎能找到所有的行尾字符,而不是最后一个。您可以使用泛型 \R\z 它将匹配换行符和文件结尾 根据文件换行符样式,您可以使用

如何使用Regx和notepad++从以下示例中删除最后一个空行

qwerty
asdfgh
<blank line>
zxcvbn
poiuyr
<last blank line>
qwerty
asdfgh
ZxCVN
波伊尔
文本示例包含文本块之间的空行

我认为“lookaround”regx可能有效,例如:(?s)(?=.*)\n但它似乎能找到所有的行尾字符,而不是最后一个。

您可以使用泛型

\R\z
它将匹配换行符和文件结尾

根据文件换行符样式,您可以使用

\r\n\z
\r\z
\n\z
\r?\n\z
由于
\R
\u000D\u000A |[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
的简写,您也可以使用

(?:\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])\z
(?:\x{000D}\x{000A}|[\x{000A}\x{000B}\x{000C}\x{000D}\x{0085}\x{2028}\x{2029}])\z
或者,如果不支持
\z

(?:\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])$(?![\s\S])
(?:\x{000D}\x{000A}|[\x{000A}\x{000B}\x{000C}\x{000D}\x{0085}\x{2028}\x{2029}])$(?![\s\S])
$(?![\s\s])
匹配一行/字符串的结尾,但不允许在其后添加字符。

您可以使用通用字符

\R\z
它将匹配换行符和文件结尾

根据文件换行符样式,您可以使用

\r\n\z
\r\z
\n\z
\r?\n\z
由于
\R
\u000D\u000A |[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
的简写,您也可以使用

(?:\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])\z
(?:\x{000D}\x{000A}|[\x{000A}\x{000B}\x{000C}\x{000D}\x{0085}\x{2028}\x{2029}])\z
或者,如果不支持
\z

(?:\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])$(?![\s\S])
(?:\x{000D}\x{000A}|[\x{000A}\x{000B}\x{000C}\x{000D}\x{0085}\x{2028}\x{2029}])$(?![\s\S])


$(?![\s\s])
匹配一行/字符串的结尾,不允许在其后面添加字符。

尝试此
\n\Z
删除所有空las行,如果您只需要一次尝试
\n\Z

尝试此
\n\Z
删除所有空las行,如果您只需要一次,请尝试
\n\z

为什么需要用正则表达式执行此操作?我有许多文件要处理。很高兴我的答案对您有用。请同时考虑对你有帮助的答案。为什么你需要用正则表达式来处理这个问题?我有很多文件要处理。很高兴我的答案对你有用。请同时考虑对你有用的答案。@ W2KPRO很高兴它对你有帮助。请考虑通过点击来接受答案。✓ 如果我的答案对您有帮助,请单击左侧(请参见)并向上投票(请参见)。这有点离题,但某些regx引擎不支持\R或\z。例如,Emeditor使用的Boost库Regex++无法与\R\z一起使用。因此,找到一个适用于大多数引擎的通用解决方案会很有趣。您是指\x{000A}而不是\u000A吗\u表示大写字符,而不是unicodeHex@w2kpro在记事本++中,使用
\x{XXXX}
表示法。您提到了一些其他编辑器,其中的
\u
符号可能会起作用。@w2kpro很高兴它对您起作用。请考虑通过点击来接受答案。✓ 如果我的答案对您有帮助,请单击左侧(请参见)并向上投票(请参见)。这有点离题,但某些regx引擎不支持\R或\z。例如,Emeditor使用的Boost库Regex++无法与\R\z一起使用。因此,找到一个适用于大多数引擎的通用解决方案会很有趣。您是指\x{000A}而不是\u000A吗\u表示大写字符,而不是unicodeHex@w2kpro在记事本++中,使用
\x{XXXX}
表示法。您提到了一些其他编辑器,其中的
\u
符号可能可以工作。这在记事本++上可以工作,但其他一些文本编辑器有点古怪。在Textpad7上,它仅在第一个文本块之后找到\n。在高级查找/替换设置窗体中的Emeditor上,额外行数必须设置为大于文件中行数的值(这是不需要的行为)。以下代码似乎适用于大多数编辑器:(?:\n)$(?![\s\s]),适用于notepad++,但其他一些文本编辑器有点古怪。在Textpad7上,它仅在第一个文本块之后找到\n。在高级查找/替换设置窗体中的Emeditor上,额外行数必须设置为大于文件中行数的值(这是不需要的行为)。以下代码似乎适用于大多数编辑器:(?:\n)$(?![\s\s])