亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正則表達式查找多行值并替換

使用正則表達式查找多行值并替換

互換的青春 2023-01-06 10:43:49
我在內存中有以下字符串,想快速從中刪除所有調試事件。我使用的正則表達式還會抓取其他事件,直到找到 DEBUG 事件。所以在這個示例中,它捕獲了不止一個事件。在下面的 XML 中,它從開始到第三個事件進行捕獲。它應該只為下面的這個輸入選擇第三個事件。我不想在這里解析 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謝謝!
查看完整描述

1 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

在處理 HTML/XML 時,您應該總是更喜歡使用解析器。

對于這種特定情況,您可以像這樣使用正則表達式:

比賽:

<event type="app">(?:(?!<\/event>)[\s\S])*<severity type="DEBUG">[\s\S]*?<\/event>

并用任何東西代替。

演示與解釋


查看完整回答
反對 回復 2023-01-06
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號