Skip to main content
 首页 » 编程设计

C# .NET 正则表达式问题

2024年01月29日22sky-heaven

我正在尝试找到解决我遇到的问题的方法。如果我执行以下 C# 代码:

Regex r = new Regex("[\\r\\n]*"); 
Match m = r.Match("\\r\\n"); 

如果我检查 m.Success 的值,我得到一个正确的值 true。但是如果我检查 m.Length 的值,我会得到 0 的值。如果我检查 m.Value,我也会得到一个空白值。我在我的正则表达式中遗漏了什么吗?我的印象是 m.Success 需要为假并且 m.Length 为 0 否则 m.Success 需要为真并且 m.Length 需要大于 0。如果您能帮助解决这个问题,我们将不胜感激!

请您参考如下方法:

Match.Success 返回真,因为正则表达式应该匹配“\r”或“\n”的“零个或多个”实例,即回车符或换行符,(如“*”符号所示).但是,您提供的字符串(在 Match 中)包含反斜杠 r、反斜杠 n,既不是回车也不是换行,因此匹配的长度为零。 (在正则表达式中,“反斜杠,n”被视为单个字符,换行)。

为避免将来进一步混淆,请尝试在正则表达式前加上“@”符号作为前缀,以避免混淆反斜杠在正则表达式中的工作方式,如下所示:

 @"[\r\n]*" 

希望这能让您更清楚地知道“\r”代表回车,“\n”代表换行。相关正则表达式:

 @"[\\rn]*" 

将匹配反斜杠、r 和/或 n 的零个或多个实例。 (双反斜杠是必要的,因为该符号在正则表达式中被特殊对待。)