簡體   English   中英

使用正則表達式解析多行控制台輸出

[英]Using Regex To Parse Multiline Console Output

我正在建立一個服務,該服務調用已經編寫的程序來執行某些工作。 我正在使用一個過程來調用exe並將其傳遞一些參數。 我正在聽程序的輸出,因此可以確定在程序中使用該過程是否成功。

我在編寫正則表達式以解析以下日志時遇到問題。 下面是一些cmd輸出的示例,因為您可以看到一些輸出可能是多行的。

[My Custom Exe][2018-05-24 11:03:01] Starting Process
[My Custom Exe][2018-05-24 11:03:01] Getting config
[My Custom Exe][2018-05-24 11:03:02] Beginning operation
[My Custom Exe][2018-05-24 11:03:02] Could not complete this operation, invalid inputs
[My Custom Exe][2018-05-24 11:03:02] Available inputs are:

- 1: Mode 1
- 2: Mode 2
- 3: Mode 3
- 4: Mode 4
- 5: Mode 5

[My Custom Exe][2018-05-24 11:03:02] Exiting Program

當我從程序中獲得此輸出時,我需要解析一個字符串,因此我正在使用正則表達式創建一個控制台輸出數組。

我想通過每個新日志來解析控制台輸出,所以我看到的所有內容都是[My Custom Exe]我想向該字符串后面包含所有內容的數組添加一個新索引,直到再次看到[My Custom Exe] ,在該位置重來。

對於這個示例,我應該在數組中有6個元素,我設法使Regex適用於單行,但是我無法將所有條目5都輸入到語句中。

我的正則表達式字符串= /\\[(.*?)\\](.*)/g

這是此正則表達式演示的鏈接,因此您可以看到我的問題。

我是RegEx的新手,在進行此類解析時找不到很多有用的信息。

謝謝

您可以嘗試:

(?m)^\[([^]]*)\](.*\n?(?!^\[))*

流程以這種方式進行:

匹配以方括號[...]開頭的行,然后使用貪心點.*匹配至行尾。 現在在行尾匹配一個換行符\\n (可選),看看下一行是否不再以方括號開頭。 如果不是(通過負前瞻(?!^\\[) ),則重復同一組正則表達式( *表示盡可能多或什么都不做)。

在這里觀看現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM