【发布时间】:2016-12-14 18:49:55
【问题描述】:
我正在 dart 中构建一个日志解析器。如何使用 dart 正则表达式库来检索匹配值。
使用link 检查我的正则表达式,一切正常:
- 正则表达式:
(?<suffix>^.*m)(?<time>\d{1,2}:\d{1,2}:\d{1,2},\d{1,3}) (?<level>[^\s]+) (?<message>.*) - 输入:[0m[31m22:25:57,366 错误[org.jboss.msc.service.fail](MSC服务线程1-8)MSC000001:无法启动服务jboss.deployment.unit。“bad.war” .
输入这些值将为您提供:后缀、时间、级别和消息
我无法在 dart 库中使用我的正则表达式。
【问题讨论】:
-
什么是有效值?
-
试试regexr.com Dart 只支持 JS RegExp 支持的 xxxToJS 可转译。
-
使用编号的捕获组:
^(.*m)(\d{1,2}:\d{1,2}:\d{1,2},\d{1,3}) ([^\s]+) (.*)并使用编号索引访问它们。 -
感谢@GünterZöchbauer 编辑原始答案。有效值为 suffix=[0m[31m , time=22:25:57,366 , level=error, message=....
-
@WiktorStribiżew 如何在 dart Regex 中使用编号的捕获组?