0

我正在尝试解析 Android 日志系统文件。一切正常,但是当我尝试从日志内容中解析参数时它不起作用。我的语法提供解析日志内容

日志内容:(参数|文本|特殊字符|数字|减号|等号|冒号|点|撇号|左括号|右括号|斜线|'_'|WS)+;

参数: text+ EQUAL (integer|floatnumber|exponentfloat) ;

参数在规则中包含文本,因此 ANTLR 表示语法不明确。我尝试了不同的规则定义,但它不起作用。我想解析这段日志

获取WakeLock 标志=0x2000000a 标签=KEEP_SCREEN_ON_FLAG uid=1000 pid=373

如何以字符串格式获取整个日志和“参数=值”对列表

标志=0x2000000a

标签=KEEP_SCREEN_ON_FLAG

uid=1000

PID=373

4

1 回答 1

1

我强烈建议改用正则表达式来完成这项任务。这种类型的操作更快更简单。

Pattern pattern = Pattern.compile("^(.*?)=(.*)$");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    String key = matcher.group(1);
    String value = matcher.group(2);
    // do whatever here...
}
于 2013-01-02T19:38:16.320 回答