1
我需要从类似于下面的sql日志中解析和提取值。多行java的正则表达式
SQL^^0001^^ABCDEF^^26^^XYZ
SQL^^0002^^ABCDEF^^26^^XYZ
abc
<>()_asc wHERE
SQL^^0003^^ABCDEF^^12^^XYZ
SQL^^0004^^ABCDEF^^28^^XYZ
但是日志总是不是单行。我有一个可以捕获的正则表达式如果它是单行的。除了最后一个元素外,这些字段的长度也是固定的。最后一个元素的长度可能不同。
(\w{3})\W{2}(\d{4})\W{2}(\w{6})\W{2}(\d{2})\W{2}(.*)
^^ is the delimiter but can be any other value also.
没有固定的行尾字符,但我需要捕获,直到下一行SQL在这种情况下。 如何解析日志并提取它们,如果它的多行日志。我在Java中尝试。 Java或Scala是首选。
正则表达式的其余部分不是输入解析跨多行的好工具。如果所有感兴趣的数据记录都以相同的模式开始,那么您可以做的一件事是将日志读入单行文本(不换行'\ n'字符),然后在开始时将'split()记录模式。之后,您将解析各个元素。 – jwvh
在每行的开头是否有以“SQL ^^'开头的新记录?要正确处理这种情况,我们需要知道确切的记录起始模式。尝试[** this regex **](https://regex101.com/r/OrIqvz/1)。 –
很高兴为你效劳。如果我的回答对你有帮助,也请考虑积极投票。 –