0

ごめん。以下のように例をリフェーズしました。次の段落でmaryが最初に出現した直後に番号 ( 1 )を一致させるにはどうすればよいですか (私の場合、3 つのグループはすべて必須です)。

Regex.Match("Do you know 3453 **Mary** has a little lamb 1 and Mary likes dancing 2."
, @"(Do).*(Mary).*(\d)");

現在は 2 番目のMaryと一致しており、その結果、3 番目のグループは1ではなく2をキャプチャしました。

4

1 に答える 1

2

.*?の代わりに使用.*:

Regex.Match("Do you know **Mary** has a little lamb 1 and Mary likes dancing 2.",
  @"(Do).*?(Mary).*?(\d)");

.*可能な限り長い部分文字列に一致します (貪欲) が.*?、最短の部分文字列に一致します (遅延)。あなたの例では、できるだけ多くの文字に一致するため.*、最初のものが最初に含まれています。Mary

于 2013-03-29T02:09:38.463 に答える