gpt4 book ai didi

c# - C# 中的正则表达式表现得很奇怪

转载 作者:太空狗 更新时间:2023-10-30 00:10:52 25 4
gpt4 key购买 nike

我在 C# 中使用正则表达式时遇到了问题。也就是说,调试器显示正确的 (IMO) 结果,但是当我尝试在我的应用程序中打印结果时,它们是不同的(而且是错误的)。代码如下:

Match match2 = Regex.Match("048 A Dream Within A Dream (satur) (123|433) K48", "(.*)(\\((.)*?\\))\\s\\((.)*?\\)\\s.*");
string nick = match2.Groups[1].Value;
string name = match2.Groups[0].Value;
Console.WriteLine("nick - '{0}', name - '{1}'", nick, name);

预期结果显示在调试器中,如以下屏幕截图所示:enter image description here

控制台显示不同(错误)的结果:

nick - '048 A Dream Within A Dream ', name - '048 A Dream Within ADream (satur) (123|433) K48'

我该如何解决?我希望结果显示与调试器中的完全一样。

最佳答案

您忽略了一个事实,即 Groups[0] 始终代表整个匹配。第一个捕获组在 Groups[1] 中。你想要:

string nick = match2.Groups[2].Value;
string name = match2.Groups[1].Value;

它显示您在调试器中所期望的内容的原因是您正在查看 GroupCollection 中字段的实现细节;当请求按数字分组时,如果请求的数字为 0,则返回匹配项,否则将数字偏移 1。

来自 GroupCollection 的文档:

If the match is successful, the first element in the collection contains the Group object that corresponds to the entire match. Each subsequent element represents a captured group, if the regular expression includes capturing groups.

关于c# - C# 中的正则表达式表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580834/

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