0

文から正規表現を使用して特定の文字列を取得しようとしています。これは私の最初の正規表現です:

   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

それらを文として扱い、一度に 1 つの文を渡すことによってデータを取得します。括弧なしでデータを取得します。

これはどのように機能しますか?何も思いつきません。正規表現は正しいと思いますが、データを取得する方法がよくわかりません。

4

1 に答える 1

1

Regex.Matchesを探しています(1 つの文に KB12345 と KB98765 の両方が含まれていると仮定します)。これはRegex.Matchに似ていますが、一致するすべての部分文字列を提供します。

テキスト全体が 1 つの文字列になっている場合は、おそらく複数の文に分割する必要はありません。文字列全体ですべての一致を取得するだけでは、同じ文字列内のすべての文ですべての一致を収集するのと同じ結果が得られます。

編集:使用している正規表現を更新する

Regex Reg = new Regex(@"(KB\d+(?:-[\w\d]+)?)", RegexOptions.IgnoreCase);
于 2012-04-30T03:32:29.770 に答える