【发布时间】:2020-02-15 18:55:16
【问题描述】:
我正在尝试使用 RegEx 对数据列表进行排序。目前,下面的代码只检查小时和分钟。
当前输出示例:
1:22:00.000000
但我有一些数据也只有几分钟或几小时。
我正在寻找编辑此代码,以便检查所有这些可能性:
小时
分钟
小时和分钟
final _regExp = RegExp(r'(?<hours>\d+)h (?<minutes>\d+)m');
Duration _parseDuration(String line) {
final match = _regExp.firstMatch(line);
if (match == null) {
throw Exception('Could not get duration from: $line');
}
return Duration(
hours: int.parse(match.namedGroup('hours')),
minutes: int.parse(match.namedGroup('minutes')));
}
我不知道该怎么做?
任何帮助将不胜感激。
【问题讨论】:
-
您能否举例说明您输入的不同形式以及您期望的结果。没有一些测试数据,很难做出一个固溶体。 :)
-
不确定是否可以为捕获组使用相同的名称,但可以使用替代名称
(?:(?:(\d+)h )?(\d+)m|(?:(\d+)h))regex101.com/r/uSn0sL/1