Javascript 使用正则表达式查找多行值并替换

Javascript 使用正则表达式查找多行值并替换,javascript,regex,Javascript,Regex,我在内存中有以下字符串,希望快速删除其中的所有调试事件。我使用的正则表达式也会捕获其他事件,直到找到调试事件为止。因此,在本示例中,它捕获了多个事件。在下面的XML中,它从开始到第三个事件进行捕获。它应该只为下面的输入选择第三个事件 这里我不想解析XML。我只想从海量数据中删除调试事件(>95%的事件)。我尝试过使用解析器做同样的事情,但它在一个很小的SBC上超时。如果您有其他方法在JavaScript(外部浏览器)中解决这个问题,我愿意接受任何建议 输入: <event type=&qu

我在内存中有以下字符串,希望快速删除其中的所有调试事件。我使用的正则表达式也会捕获其他事件,直到找到调试事件为止。因此,在本示例中,它捕获了多个事件。在下面的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>

1234
消息
1235
消息
1236
消息
1237
消息
regex:
处理HTML/XML时,您应该始终更喜欢使用解析器

对于这种特定情况,您可以像这样使用正则表达式:

匹配:

<event type="app">(?:(?!<\/event>)[\s\S])*<severity type="DEBUG">[\s\S]*?<\/event>
(?:(?!)[\s\s])*[\s\s]*?
什么都没有取代


正则表达式不适合处理XML。我建议使用XML解析器来完成这项任务。@oobug我知道正则表达式不适合XML。运行此任务的主机没有太多CPU能力,因此我尝试从字符串中删除不必要的数据,然后使用XML解析器进行解析。这个事件数据非常庞大,有很多我不需要的调试事件,处理这个XML需要花费很多时间,而且正在超时。XML解析器通常能够遍历XML,而不是将整个XML文档加载到内存中。你用的是什么编程语言?@oobug我用的是Javascript这是你想要的吗?