XMLERR:元素 '=').*?(?=')

XMLERR:元素 '=').*?(?=')

我正在尝试在 Wazuh 工具的 PCRE2 正则表达式中使用环视元素,我需要匹配双引号中的字符串并制作下面的正则表达式,但它看起来拾取“<”字符而不关闭正则表达式元素。

<regex type="pcre2">(?<=").*?(?=")</regex>

错误:(1226):读取 XML 文件“etc/decoders/local_decoder.xml”时出错:XMLERR:元素“=”)。?(?=")</regex' 未关闭。(第 33 行)。*

我试图逃避 (?<=")但是它似乎不起作用。知道如何转义它以便正确解析元素

答案1

PCRE2 正则表达式语法允许您以不同的等效方式编写断言:

  • (?<=与以下任意一个相同:

    • (*plb:
    • (*positive_lookbehind:
  • (?=与以下任意一个相同:

    • (*pla:
    • (*positive_lookahead:

(这是来自 PRCE2 库的pcre2pattern手动的.)

这意味着您应该能够重写正则表达式,而无需使用 XML 中的特殊字符(<在本例中)作为更具表现力的字符

<regex type="pcre2">(*positive_lookbehind:").*?(*positive_lookahead:")</regex>

或简洁的

<regex type="pcre2">(*plb:").*?(*pla:")</regex>

答案2

<是一个 XML 元字符,必须编码为&lt;或类似的。

另外,>is&gt;和字面量&&amp;

然而,您正在使用的工具似乎在这方面存在错误,因此您必须找出解决方法;看https://github.com/wazuh/wazuh/issues/14261

相关内容