regex - Flutter 无法解析正则表达式

标签 regex dart flutter

Flutter 无法解析 this working regex ,并且不返回任何错误或信息。

(?<=id=)[^&]+

但是,当我将它添加到我的 Flutter 应用程序中时:

print("before");
new RegExp(r'(?<=id=)[^&]+');
print("after");

它不做任何事情,不返回任何错误。 print("after"); 永远不会被执行。它不会完全卡住应用程序,因为它是异步的。

最佳答案

为 Web 编译的 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=([^&]+).

关于regex - Flutter 无法解析正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53986424/

相关文章:

dart - 如何在 Dart 中比较列表的相等性?

android-studio - flutter SDK 在 android studio 中不可用

javascript - 如何创建一个接受 12 个数字(带加号、减号、空格)的正则表达式

java - 如何在 Java 中为 POSIX 扩展格式转义正则表达式文本

flutter : TextEditingController Only Static member can be accessed in initializer error

flutter - 如何从DataSnapshot返回 future 列表

firebase - flutter with firebase - 检测 url 字符串是图像(jpg)还是视频(avi)

regex - 正则表达式以匹配IRC昵称

php - 正则表达式匹配 'word' 1 个字符长

function - Dart 访问作为对象。如何调用它们?