这是我第一次使用 C# 和我有限的正则表达式经验的一部分,我无法捕获特定表达式中第一次出现的匹配项。我相信下面的例子会比文字更清楚地描述我想做的事情。
Match extractor = (new Regex(@".*\d(?<name>.*)\d.*")).Match("This hopefully will pick up 1Bob9error1 as a name");
Console.WriteLine(extractor.Groups["name"]);
我想用这个表达式打印“Bob”而不是“error”。
我有预感它与 ?在匹配组前面,但我不确定是什么操作?在这种特殊情况下执行。解释和一些帮助会很棒。
谢谢你们,你们不知道这个网站对像我这样的初学者有多大帮助。
最佳答案
你的问题是贪婪。那就是正则表达式的贪婪。你的 .* 一开始就捕获了所有这些 "This hopefully will pick up 1Bob"。试试这个正则表达式:
\d(?<name>[^\d]+)\d
关于c# - 使用正则表达式捕获第一个匹配项 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828971/