Flutter/Dart: 正则表达式替换为 $2?

Flutter/Dart: Regex Replace with $2?

我正在尝试使用 Dart 中的 replaceall regex 方法仅从 Facebook 图片 URL 中获取 ID 号。在下面的代码中,我应该使用什么来代替 $2?我需要的ID号在“asid=”和“&height”之间。

void main() {
 String faceavatar = 'https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10153806530149154&height=50&width=50&ext=1596623207&hash=AeSi1yDvk8TCqZql';
      String currentavatar = faceavatar.replaceAll(RegExp('(.*asid=)(\d*)height.*'), ;
  print(currentavatar);
}

你可以试试:

.*?\basid\b=(\d+).*

上面正则表达式的解释:

  • .*? - Lazily 匹配除 asid.
  • 之前的换行符以外的所有内容
  • \basid\b - 按字面意思匹配 asid\b表示字边界。
  • = - 按字面意思匹配 =
  • (\d+) - 表示第一个捕获组匹配数字一次或多次。
  • .* - 贪心 除换行零次或多次外的所有内容。
  • </code></strong> - 对于更换部件,您可以使用 <code>match.group(1).

你可以在here.

中找到上述正则表达式的演示

dart 中的示例实现:

void main() {
 String faceavatar = 'https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10153806530149154&height=50&width=50&ext=1596623207&hash=AeSi1yDvk8TCqZql';
      String currentavatar = faceavatar.replaceAllMapped(RegExp(r'.*?\basid\b=(\d+).*'), (match) {
  return '${match.group(1)}';
});
  print(currentavatar);
}

您可以在 here.

中找到上述实现的示例 运行

刚刚获得帮助:

(?<=(asid=))(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|]| )+?(?=(&height))

输出:10153806530149154