Я пытаюсь скопировать этот пример MSDN , который использует класс Capture в Dart. Я заметил, что у Дарт, похоже, нет понятия Захватов внутри группы.
Вот пример источника MSDN для потомков:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "Yes. This dog is very friendly.";
string pattern = @"((\w+)[\s.])+";
foreach (Match match in Regex.Matches(input, pattern))
{
Console.WriteLine("Match: {0}", match.Value);
for (int groupCtr = 0; groupCtr < match.Groups.Count; groupCtr++)
{
Group group = match.Groups[groupCtr];
Console.WriteLine(" Group {0}: {1}", groupCtr, group.Value);
for (int captureCtr = 0; captureCtr < group.Captures.Count; captureCtr++)
Console.WriteLine(" Capture {0}: {1}", captureCtr,
group.Captures[captureCtr].Value);
}
}
}
}
// The example displays the following output:
// Match: Yes.
// Group 0: Yes.
// Capture 0: Yes.
// Group 1: Yes.
// Capture 0: Yes.
// Group 2: Yes
// Capture 0: Yes
// Match: This dog is very friendly.
// Group 0: This dog is very friendly.
// Capture 0: This dog is very friendly.
// Group 1: friendly.
// Capture 0: This
// Capture 1: dog
// Capture 2: is
// Capture 3: very
// Capture 4: friendly.
// Group 2: friendly
// Capture 0: This
// Capture 1: dog
// Capture 2: is
// Capture 3: very
// Capture 4: friendly
Вот моя попытка воспроизвести его в дротике:
final RegExp _regExp = new RegExp(r'((\w+)[\s.])+');
final String _input = "Yes. This dog is very friendly.";
var matches = _regExp.allMatches(_input);
for (int i = 0; i < matches.length; i++) {
var match = matches.elementAt(i);
print('Match $i');
for (int j = 0; j < match.groupCount; j++) {
var group = match.group(j);
print('\tGroup: $j $group');
}
}
Но это дает следующие результаты:
Match 0
Group: 0 Yes.
Group: 1 Yes.
Match 1
Group: 0 This dog is very friendly.
Group: 1 friendly.
Обратите внимание, что последняя группа (группа 1) в матче 1 содержит только «дружественные». Есть ли способ в Dart перечислять несколько захватов в пределах одной группы, например, в выходных данных примера MSDN?