匹配除空行之外的所有内容或仅包含空格的行

时间:2015-08-27 14:29:20

标签: regex invert

匹配遵循这些规则的所有行的最简单方法是什么:

  1. 该行不为空
  2. 该行不仅包含空格
  3. 我找到的表达式只匹配空行或那些只包含空格的行,但我无法将其反转。这是我发现的:^\s*[\r\n]

    是否可以反转正则表达式?

    非常感谢!

2 个答案:

答案 0 :(得分:2)

要匹配非空行,您可以在多行模式下使用以下正则表达式(感谢@Casimir进行字符类校正):

^[^\S\r\n]*\S.*$

行尾使用.*,匹配任何字符,但换行符。

请参阅demo

要检查该行是否不是空格(但不匹配),请使用简化版本:

^[^\S\r\n]*\S

请参阅another demo

[^\S\r\n]*匹配除非空格和回车符以及换行符号之外的0个或多个字符。 \S匹配非空白字符。

顺便说一句,如果您使用C#进行编码,则不需要正则表达式来检查字符串是否为空格,因为String.IsNullOrWhiteSpace只是将多行字符串拆分为str.Split(new[] {"\r\n"}, StringSplitOptions.None)。< / p>

答案 1 :(得分:1)

只需验证至少有一个非空白字符:

^.*\S.*$

See it in action

说明:

  • 从开始(^)到结束($
  • .* - 任意数量的任何字符
  • \S - 一个非空格字符