有 log 如下
2016-03-21 21:36:20.878 INFO 17512 --- [main] This is going well
ok: [goingwell] => {
"localresult": {
"aa":"bb",
"aaa":"bbb"
}
}
2016-03-21 21:36:30.878 INFO 17512 --- [main] Continue...
2016-03-21 21:36:40.878 INFO 17512 --- [main] Logging ...
如何得到 localresult={ aa:'bb', aaa:'bbb'}?
假设用 java 语言。
1
knightdf 2016-03-21 22:28:56 +08:00
正则啊。。。
|
2
singer 2016-03-21 22:47:09 +08:00 via iPhone
转成 json 格式,再取
|
3
crystom 2016-03-22 00:00:13 +08:00
不是时间戳开头的行取出来吧
|
4
TaoAlpha 2016-03-22 01:11:20 +08:00 1
|
5
bombless 2016-03-22 06:08:33 +08:00 via Android
是我的话先用 awk 处理掉胖箭头和它之前的东西
|
6
lyklykkkkkkk OP 更新:
https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Chomsky-hierarchy.svg/800px-Chomsky-hierarchy.svg.png 按照上图乔姆斯基文法分类, Json 本身是上下文无关语法,高于正则表达式的表达能力,所以普通 regex 没有能力严格描述 Json ,甚至连括号匹配都无法完成。 正则表达式的变种, PCRE ,支持更多模式,比如递归,可以描述大括号的匹配。如 @TaoAlpha 的解决方案。 但 Java 的正则没有这么强,我也没有找到 Java 能用的 PCRE 库。所以四楼的正则表达式没法直接用,必须去掉递归,将递归降级成有限层次的递归匹配, Java 才能处理了(一般 json 嵌套也就三四层)。 比如这样: https://regex101.com/r/aF7aH6/4 |