我有一个日志文件,我正在尝试扫描模式并计算某些模式的显示次数。日志看起来像这样
11298 [out] [worker:83]数据已经重建。
11299 [out] [worker:83] END为foo建立数据
11299 [out] [worker:83] END建立数据栏
11300 [out] [worker:83] BEGIN为baz建立数据
11301 [错误] [工人:83]普京轰炸叙利亚
我对以[out]开头并包含END,BEGIN或重建的所有行感兴趣(需要单独计算)。所以我认为以下正则表达式
(out.*END)*
会多次匹配模式out] anything here END
的补丁,但它只会在我的文件中为我提供out
的第一个实例并停止。有人能指出我正确的方向吗?
我在MATLAB中使用语法regexp(txt,expr,'start')
答案 0 :(得分:2)
这是一个文档:http://www.mathworks.com/help/matlab/ref/regexp.html
默认情况下, regexp
会返回所有匹配项。
尝试使用选项和outkeys(作为第3个参数传递)。看起来这个可以帮助:'dotexceptnewline'
- 你的正则表达式是贪婪的,可能与整个事物匹配(从第一个out
到最后一个END
)。
尝试使用outkey 'match'
代替'start'
。
同时检查您的结果是否未被错误截断。