[英]find multi line values using regular expression and replace
我在 memory 中有以下字符串,並希望從中快速刪除所有調試事件。 我正在使用的正則表達式還會抓取其他事件,直到找到 DEBUG 事件。 因此,在此示例中,它捕獲了多個事件。 在下面的 XML 中,它從開始到第三個事件進行捕獲。 它應該只有 select 下面這個輸入的第三個事件。
我不想在這里解析 XML。 我只想從大量數據中刪除調試事件(> 95% 的事件)。 我嘗試過使用解析器做同樣的事情,但它在一個小 SBC 上超時。 如果您有其他方法可以在 JavaScript(外部瀏覽器)中解決此問題,我願意接受任何建議。
輸入:
<event type="app">
<header>
<info>1234</info>
</header>
<body>
<severity type="INFO">message</severity>
</body>
</event>
<event type="app">
<header>
<info>1235</info>
</header>
<body>
<severity type="ERROR">message</severity>
</body>
</event><event type="app">
<header>
<info>1236</info>
</header>
<body>
<severity type="DEBUG">message</severity>
</body>
</event>
<event type="app">
<header>
<info>1237</info>
</header>
<body>
<severity type="ERROR">message</severity>
</body>
</event>
正則表達式: <event type="app"(.|\n|\r\n)*?<severity type="DEBUG"(.|\n|\r\n)*?<\/event>
我在網上有這個樣本:
https://regex101.com/r/JW3DWE/1
謝謝!
在處理 HTML/XML 時,您應該總是更喜歡使用解析器。
對於這種特定情況,您可以像這樣使用正則表達式:
匹配:
<event type="app">(?:(?!<\/event>)[\s\S])*<severity type="DEBUG">[\s\S]*?<\/event>
並一無所有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.