我试图使用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.*'), $2;
print(currentavatar);
}
最佳答案
您可以尝试:
.*?\basid\b=(\d+).*
以上正则表达式的解释:.*?
-懒惰的匹配asid
之前除换行符以外的所有内容。 \basid\b
-从字面上匹配asid
。 \b
表示单词边界。 =
-从字面上匹配=
。 (\d+)
-一次或多次表示第一个捕获组匹配数字。 .*
-贪婪除换行零次或多次外,其他所有内容。 $1
-对于替换零件,您可以使用$1
或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.中找到上述实现的示例运行