我目前正在解析具有以下结构的日志文件:
1) 时间戳,前面是 # 字符,后面是 \n
2) 在该时间戳之后发生的任意 # 个事件,所有事件后跟 \n
3) 重复..
这是一个例子:
#100
04!
03!
02!
#1299
0L
0K
0J
0E
#1335
06!
0X#
0[#
b1010 Z$
b1x [$
...
请原谅看似神秘的值,它们是代表某些“事件”的编码。
注意:事件编码也可以使用 # 字符。
我想做的是计算在某个时间发生的事件的数量。
换句话说,在时间 100,发生了 3 个事件。
我正在尝试匹配两个时间戳之间的所有文本 - 并通过简单地计算匹配文本中包含的换行符数来计算事件数。
我正在使用 Python 的正则表达式引擎,并且正在使用以下表达式:
pattern = re.compile('(#[0-9]{2,}.*)(?!#[0-9]+)')
注意: {2,} 是因为我想要至少有两位数字的时间戳。
我匹配一个时间戳,继续匹配任何其他字符,直到达到另一个时间戳 - 结束匹配。
这返回的是:
#100
#1299
#1335
所以,我得到了时间戳——但没有任何事件数据——我真正关心的!
我认为这样做的原因是消极的后视是“贪婪的”——但我并不完全确定。
可能有一个完全不同的正则表达式可以让这变得更简单 - 接受任何建议!
任何帮助深表感谢!
-k