.net 正则表达式仅检索第一个必需元素,而不是所有元素

.net 正则表达式仅检索第一个必需元素,而不是所有元素,.net,regex,.net,Regex,有人能帮我从以下示例文本中检索一些元素吗: sdfaasdflj asdfjl;a AB-12/34 BC-/85 CD-//8 DD-77 DE-78/9 EE-78-98 asdf; asdjf 必须获得以下元素: AB-12/34、BC-/85、CD-/8、DD-77、DE-78/9 当我使用这样的正则表达式时: \s*(?<elements>\b[A-Z]{2}-[/0-9]+\b) (?s).*\sas.*? \s*(?<elements>\b[A-Z]{

有人能帮我从以下示例文本中检索一些元素吗:

sdfaasdflj asdfjl;a 
AB-12/34 BC-/85 CD-//8 DD-77
DE-78/9
EE-78-98
asdf; asdjf
必须获得以下元素: AB-12/34、BC-/85、CD-/8、DD-77、DE-78/9

当我使用这样的正则表达式时:

\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)
(?s).*\sas.*?
\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)*.*
.*as
\s*(?\b[A-Z]{2}-[/0-9]+\b)
一切正常-所有必要的元素都被检索(除了EE元素之外,其他元素都在其中,但这并不重要)。 问题是这一行是更复杂的正则表达式的一部分,所以当我尝试应用这样的正则表达式时:

\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)
(?s).*\sas.*?
\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)*.*
.*as
(?s)。*\sas.*?
\s*(?\b[A-Z]{2}-[/0-9]+\b)**
*as
它只返回我的第一个AB-12/34元素,其他什么都没有。 如何更正正则表达式以获取所有元素?TIA.

要多次匹配块
“(?\b[A-Z]{2}-[/0-9]+\b)*”
在您的示例中,您需要在其中包含空格。即:

"(?<elements>\s*\b[A-Z]{2}-[/0-9]+\b)*"
“(?\s*\b[A-Z]{2}-[/0-9]+\b)*”

如果不想捕获它,请尝试
“”(?:\s*(?\b[A-Z]{2}-[/0-9]+\b))*“
。不过,我不确定非捕获组中的命名捕获组将如何工作。=)

您希望每个元素都在一个单独的捕获组中,还是希望所有元素都在一个组中?你如何在你的程序中使用这个正则表达式?我将这样使用它:。。。var m=Regex.Match(txtInput.Text,txtPattern.Text);如果(m.Success){var elements=m.Groups[“elements”];var captures=elements.captures;foreach(在捕获中捕获){lstrests.Items.Add(Capture.Value);}}……非捕获组中的捕获组工作正常。在.NET中,您可以使用CaptureCollection检索所有匹配项,例如:
match.Groups[“elements”]。捕获