gpt4 book ai didi

dart - Dart RegExp未返回匹配项

转载 作者:行者123 更新时间:2023-12-03 03:01:50 25 4
gpt4 key购买 nike

我有一个经过测试的正则表达式,用于将,分隔的短语分割为字符串,但,放在方括号中。

使用ECMAScript风格在https://regex101.com/r/COMj2b/1中用此字符串测试正则表达式可得出所需的匹配项。我的Dart版本中没有打印任何匹配项。

任何指导,不胜感激!

void main() {
String s = """Joe's Jazz Band (Ensemble), Fred Dagg (Guitar), Tommy Tucker (Horn, Clarinet), The Pied Piper (Whistle)""";
RegExp re = RegExp(r'([^,(]*\([^)]*\))*[^,]*(,|$)');

List li = s.split(re);
print('$li');
}

我的Dart代码显示 [,,,]

我希望它能打印: ['Joe's Jazz Band (Ensemble)', 'Fred Dagg (Guitar)', 'Tommy Tucker (Horn, Clarinet)', 'The Pied Piper (Whistle)']

最佳答案

split不返回匹配项,而是在模式匹配项处拆分字符串,并返回子字符串列表。

假设分隔符是一个)括号,后跟零个或多个空格和一个逗号,这适用于split:

void main() {
String s = """Joe's Jazz Band (Ensemble), Fred Dagg (Guitar), Tommy Tucker (Horn, Clarinet), The Pied Piper (Whistle)""";
RegExp re = RegExp(r'\)[ \t]*,');

Iterable li = s.split(re).map((item) => item.endsWith(")") ? item.trim() : "$item)".trim());

li.forEach((item) => print('$item'));

}

请注意,有必要在最后一个分割的元素上添加 )
如果您想删除开头和结尾的空格,则 trim()并不是必需的。

关于dart - Dart RegExp未返回匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54158129/

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