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

関連情報