【发布时间】:2015-08-27 14:29:19
【问题描述】:
匹配所有遵循这些规则的行的最简单方法是什么:
- 该行不为空
- 该行不仅包含空格
我找到了一个只匹配空行或只包含空格的表达式,但我无法反转它。这是我发现的:^\s*[\r\n]。
是否可以简单地反转正则表达式?
非常感谢!
【问题讨论】:
-
\S表示找到的行不为空,也表示至少包含一个非空白字符。最好的办法是使用这个正则表达式 grep 行。
标签: regex
匹配所有遵循这些规则的行的最简单方法是什么:
我找到了一个只匹配空行或只包含空格的表达式,但我无法反转它。这是我发现的:^\s*[\r\n]。
是否可以简单地反转正则表达式?
非常感谢!
【问题讨论】:
\S 表示找到的行不为空,也表示至少包含一个非空白字符。最好的办法是使用这个正则表达式 grep 行。
标签: regex
要匹配非空行,您可以使用以下正则表达式并启用多行模式(感谢@Casimir 对字符类进行更正):
^[^\S\r\n]*\S.*$
行尾与匹配除换行符以外的任何字符的.* 一起使用。
见demo
要检查该行是否不是空格(但不匹配),请使用简化版本:
^[^\S\r\n]*\S
[^\S\r\n]* 匹配除非空格、回车和换行符之外的 0 个或多个字符。 \S 匹配非空白字符。
顺便说一句,如果你用 C# 编码,你不需要正则表达式来检查字符串是否为空格,因为有 String.IsNullOrWhiteSpace,只需将多行字符串与 str.Split(new[] {"\r\n"}, StringSplitOptions.None) 分割。
【讨论】:
^[^\S\r\n]*\S
【讨论】: