Java环境下提取日志行全量方括号块文本及末尾内容的正则实现
Java环境下日志文本提取的正则实现需求
日志格式参考
[2021-03-10 00:13:32.901] [DefaultDispatcher-worker-2 @coroutine#3] [DEBUG] [4231c006d9083a302fce59d5f0957226] [42c5ac3c0acfc68d] [GreeterImpl] Hello John
该类日志结构固定为:连续排列的多段方括号包裹文本块 + 块序列之后的非方括号日志正文,上述参考样例中一共包含6个方括号包裹块。
功能要求
- 编写适配Java环境的正则表达式,需完整提取两类内容:
- 所有方括号块内部的文本内容
- 日志末尾非方括号区域的正文内容
- 正则需兼容方括号块为空的异常场景,即日志中出现
[]空块时,匹配逻辑不失效、可正常提取内容
现有尝试的匹配问题
两次正则尝试均未达到预期效果:
- 第一版正则
(?:\[(\[^\[\]]*)\])+([^\[\]]+):仅能匹配并捕获第一个方括号块的内容,后续所有方括号块的信息都无法被提取 - 第二版正则
(?:(?<=\[)[^\[\]]*(?=\]))+([^\[\]]+):执行后完全无法匹配到任何有效内容
内容的提问来源于stack exchange,提问作者Abhijit Sarkar
相关产品推荐
相关产品推荐

