C# .NET Regex problem

本文关键字:problem Regex NET | 更新日期: 2023-09-27 18:01:09

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

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

如果我检查m.Success的值,我得到的值为true,这是正确的。但是如果我检验m.Length的值,我得到了0的值。如果我检查m.Value,我也会得到一个空白值。我的Regex是不是少了什么?我的印象是m.Success需要为假并且m.Length为0,或者m.Success需要为真并且m.Length需要大于0。如有任何帮助,我们将不胜感激!

C# .NET Regex problem

Match.Success返回true,因为Regex应该匹配"零或更多";";''r〃;或";''n〃;,即回车或换行(如"*"符号所示(。但是,您提供的字符串(在Match中(包含反斜杠,r,反斜杠,n,它既不是回车也不是换行,因此匹配的长度为零。(在正则表达式中,"反斜杠,n"被视为单个字符的换行符(。

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

 @"['r'n]*"

希望这能让我们更清楚地认识到;''r〃;代表回车;''n〃;用于换行。相关的正则表达式:

 @"[''rn]*"

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