このページでは、さまざまなコンテキストで正規表現を使用する際に正しいエスケープを使用する例を示します。
トリガー式コンストラクターを使用すると、正規表現に正しいエスケープが自動的に追加されます。
コンテキスト付きユーザーマクロ
正規表現: \.+\"[a-z]+
コンテキスト付きユーザーマクロ: {$MACRO:regex:"\.+\\"[a-z]+"}
注意:
アイテムキーパラメータ内のマクロ関数
正規表現: .+:(\d+)$
アイテムキー: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]
注意:
regsub
マクロ関数内の正規表現は二重引用符で囲まれています(閉じ括弧が含まれているため)。LLDマクロ関数
正規表現: \.+\"([a-z]+)
LLDマクロ: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
注意:
ユーザーマクロコンテキスト内のLLDマクロ関数
正規表現: \.+\"([a-z]+)
LLDマクロ: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
コンテキスト付きユーザーマクロ: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}
注意:
関数の文字列パラメータ (任意)
concat
を例として使用します。
文字列の内容: \.+\"[a-z]+
式: concat("abc", "\\.\\\"[a-z]+")
注意:
関数の文字列パラメータ内にLLDマクロ関数があります
正規表現: \.+\"([a-z]+)
LLDマクロ: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
式: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")
注意:
関数の文字列パラメータ内にコンテキストを持つユーザーマクロ
正規表現: \.+\"[a-z]+
コンテキストを持つユーザーマクロ: {$MACRO:regex:"\.+\\"[a-z]+"}
式: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
注意:
関数内のユーザーマクロコンテキスト内のLLDマクロ関数
正規表現: \.+\"([a-z])+
LLDマクロ: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
コンテキスト付きユーザーマクロ: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
式: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")
エスケープの3つのレイヤーに注意してください。
1. LLDマクロ関数の場合(バックスラッシュをエスケープしません)。
2. コンテキスト付きユーザーマクロの場合(バックスラッシュをエスケープしません)。
3. 関数の文字列パラメータの場合(バックスラッシュをエスケープします)。
文字列のすぐ内側にコンテキストがあるユーザーマクロ
正規表現: \.+\"[a-z]+
コンテキストがあるユーザーマクロ: {$MACRO:regex:"\.+\\"[a-z]+"}
何らかの表現の文字列内。例: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
注意: