gpt4 book ai didi

C# .NET 正则表达式问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:42 25 4
gpt4 key购买 nike

我正在尝试找到解决我遇到的问题的方法。如果我执行以下 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 的零个或多个实例。 (双反斜杠是必要的,因为该符号在正则表达式中被特殊对待。)

关于C# .NET 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com