Dart, скомпилированный для Интернета, поддерживает lokbehinds, но текущая версия нативного Dart (включая Flutter) не поддерживает lookbehinds ( source ).
В вашем случае вы хотите сопоставитьстрока после определенной строки.Все, что вам нужно, это объявить группу захвата в вашем шаблоне и затем получить доступ к этому подстатью:
RegExp regExp = new RegExp(r"id=([^&]+)");
String s = "http://example.com?id=some.thing.com&other=parameter; http://example.com?id=some.thing.com";
Iterable<Match> matches = regExp.allMatches(s);
for (Match match in matches) {
print(match.group(1));
}
Вывод:
some.thing.com
some.thing.com
Здесь id=([^&]+)
соответствует id=
, а затем([^&]+)
захват группы # 1 сопоставляет и захватывает в группу 1 любой один или несколько символов, кроме &
.Обратите внимание, что вы можете сделать его более безопасным, если добавите [?&]
перед id
, чтобы он соответствовал только id
, а не thisid
параметру запроса: [?&]id=([^&]+)
.