gpt4 book ai didi

regex - 在Dart中获取与RegExp匹配的所有子字符串的最佳方法

转载 作者:行者123 更新时间:2023-12-01 11:35:38 29 4
gpt4 key购买 nike

我想获取与字符串中的RegExp匹配的子字符串列表。做这个的最好方式是什么?

来自dart:core的RegExp对象具有Iterable<Match> allMatches(String input, [int start=0])方法。这是我所需要的,但是我想获得字符串的Iterable,而不是匹配项。

还有一种方法String stringMatch(String input),它返回一个String,但是只有第一个匹配项。

所以我用map编写了myslef这个函数:

Iterable<String> _allStringMatches(String text, RegExp regExp) {
Iterable<Match> matches = regExp.allMatches(text);
List<Match> listOfMatches = matches.toList();

// TODO: there must be a better way to get list of Strings out of list of Matches
Iterable<String> listOfStringMatches = listOfMatches.map((Match m) {
return m.input.substring(m.start, m.end);
});

return listOfStringMatches;
}

但是在我看来,它是非常基本的功能,而且我不敢相信它不在API的任何地方。我想一定有更好的方法来完成这样的基本任务。

最佳答案

如果您的正则表达式仅包含(例如new RegExp(r'(\S+)')),则可以将函数重写为:

Iterable<String> _allStringMatches(String text, RegExp regExp) => 
regExp.allMatches(text).map((m) => m.group(0));

关于regex - 在Dart中获取与RegExp匹配的所有子字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545081/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com