仅当下一行为空行时才匹配行
Match line only if next line is an empty Line
我对正则表达式很陌生,我想做的是仅当下一行是空行时才匹配一行。
例如:
- 这是一些文字
- (空行)
- 这是一些文字
- 这是一些文字
- 这是一些文字
- (空行)
- 这是一些文字
- (空行)
在前面的示例中,我希望能够 select 仅第 1、5、7 行。
记事本++中的正则表达式是否可行?
提前致谢。
您可以尝试以下基于正向预测的正则表达式。
^.*?\S.*(?=\n[ \t]*$)
\S
匹配任何非 space 字符。所以 .*?\S.*
匹配至少有一个非 space 字符的行,下面的 (?=\n[ \t]*$)
断言匹配后必须跟一个换行符,然后是零个或多个 space 或制表符。
或
^.*?\S.*(?=\n\n)
如果您将空行表示为没有任何单个 space 或制表符的行,那么您可以使用上面的正则表达式。 (?=\n\n)
断言匹配后必须跟一个空行。
这应该可以解决问题:
/(.)*\n\n/
如果您正在寻找一种简单的方法来测试/验证正则表达式 rubular 非常好。
你可以使用这个正则表达式,
(.*)\n\s*\n
并替换为
它使用了group capture的概念,所以这里可以使用
来使用捕获组,即换行前的行
我对正则表达式很陌生,我想做的是仅当下一行是空行时才匹配一行。
例如:
- 这是一些文字
- (空行)
- 这是一些文字
- 这是一些文字
- 这是一些文字
- (空行)
- 这是一些文字
- (空行)
在前面的示例中,我希望能够 select 仅第 1、5、7 行。
记事本++中的正则表达式是否可行?
提前致谢。
您可以尝试以下基于正向预测的正则表达式。
^.*?\S.*(?=\n[ \t]*$)
\S
匹配任何非 space 字符。所以 .*?\S.*
匹配至少有一个非 space 字符的行,下面的 (?=\n[ \t]*$)
断言匹配后必须跟一个换行符,然后是零个或多个 space 或制表符。
或
^.*?\S.*(?=\n\n)
如果您将空行表示为没有任何单个 space 或制表符的行,那么您可以使用上面的正则表达式。 (?=\n\n)
断言匹配后必须跟一个空行。
这应该可以解决问题:
/(.)*\n\n/
如果您正在寻找一种简单的方法来测试/验证正则表达式 rubular 非常好。
你可以使用这个正则表达式,
(.*)\n\s*\n
并替换为
它使用了group capture的概念,所以这里可以使用来使用捕获组,即换行前的行