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)。 –
很高興爲你效勞。如果我的回答對你有幫助,也請考慮積極投票。 –