如何将所有正则表达式匹配项放入字符串列表中

Nit*_*euq 6 regex dart flutter

我有一个随机日期列表,格式如下:

String x ="Text(\"key:[2020-08-23 22:22, 2020-08-22 10:11, 2020-02-22 12:14]\"),"
Run Code Online (Sandbox Code Playgroud)

我可以使用\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}正则表达式来匹配中的所有日期x

RegExp regExp79 = new RegExp(
    r'\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}',
);
var match79 = regExp79.allMatches("$x");
var mylistdate = match79;
Run Code Online (Sandbox Code Playgroud)

所以,比赛是:

match 1 = 2020-08-22 22:22
match 2 = 2020-08-22 10:11
match 3 = 2020-02-22 12:14
Run Code Online (Sandbox Code Playgroud)

我想将 转换Iterable<RegExpMatch>为字符串列表,以便列表的输出如下所示:

[2020-08-22 22:22, 2020-08-22 10:11, 2020-02-22 12:14]
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 10

allMatches方法返回一个Iterable<RegExpMatch>值。它包含所有RegExpMatch包含有关匹配的一些详细信息的对象。您需要.group(0)在每个RegExpMatch对象上调用该方法来获取匹配的字符串值。

所以,你需要.map结果:

your_regex.allMatches(x).map((z) => z.group(0)).toList()
Run Code Online (Sandbox Code Playgroud)

代码:

String x ="Text(\"key:[2020-08-23 22:22, 2020-08-22 10:11, 2020-02-22 12:14]\"),";
RegExp regExp79 = new RegExp(r'\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}');
var mylistdate = regExp79.allMatches(x).map((z) => z.group(0)).toList();
print(mylistdate);
Run Code Online (Sandbox Code Playgroud)

输出:

[2020-08-23 22:22, 2020-08-22 10:11, 2020-02-22 12:14]
Run Code Online (Sandbox Code Playgroud)