c# - 使用正则表达式捕获第一个匹配项 (C#)

标签 c# regex

这是我第一次使用 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/

相关文章:

java - 否定 Java 正则表达式中的文字字符串

php - 你如何实现一个好的亵渎过滤器?

c# - "Reference the package directly from the project to resolve this issue."

c# - 试图在 .NET 应用程序中读取或写入 protected 内存

c# - 在 asp.net mvc 中处理按钮点击的正确方法?

java - 正则表达式确定文本中某个单词的出现次数是否不超过 n 次

c# - 如何从一个FTP下载文件然后上传文件到不同的FTP?

c# - 使用初始化列表从数组初始化列表

python - 正则表达式 Python 问题

regex - 从字符串中删除所有空格