C# 使用正则表达式从句子中检索特定字符串

C# 使用正则表达式从句子中检索特定字符串,c#,regex,data-retrieval,C#,Regex,Data Retrieval,我试图从一个句子中检索带有正则表达式的特定字符串。 这是我的首个正则表达式: Regex Reg = new Regex(@"^[KB|kb](\w+)[-]?(\w+)$"); From input of : word word word (KB92922-WMP9) word. word word word (KB929222910) word word. word word kb28928282 word word. 它应该能够检索: KB92922-WMP9

我试图从一个句子中检索带有正则表达式的特定字符串。 这是我的首个正则表达式:

   Regex Reg = new Regex(@"^[KB|kb](\w+)[-]?(\w+)$");

  From input of :
  word word word (KB92922-WMP9) word.
  word word word (KB929222910) word word.
  word word kb28928282 word word.
它应该能够检索:

  KB92922-WMP9
  KB929222910
  kb28928282
将它们视为句子,我们通过一次传递一个句子来检索数据。检索不带括号的数据

这将如何运作?我不知道。我想我的正则表达式是对的,但我不太确定如何检索数据。

您正在查找(假设一个句子可能同时包含KB12345和KB98765)。它类似于,但将提供所有匹配的子字符串

如果将整个文本作为一个字符串,则可能没有必要将其拆分为句子。只需获取整个字符串中的所有匹配项,就会得到与收集同一字符串中所有句子中的所有匹配项相同的结果

编辑:更新您正在使用的正则表达式

Regex Reg = new Regex(@"(KB\d+(?:-[\w\d]+)?)", RegexOptions.IgnoreCase);

请不要在标题前加上“C-”之类的前缀。这就是标记的用途。我发现这在测试正则表达式时非常有用: