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
我正在尝试使用 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