16 Esempi di escaping
Panoramica
Questa pagina fornisce esempi di utilizzo dell'escape corretto quando si usano espressioni regolari in vari contesti.
Quando si utilizza il costruttore di espressioni del trigger, l'escape corretto nelle espressioni regolari viene aggiunto automaticamente.
Esempi
Macro utente con contesto
Espressione regolare: \.+\"[a-z]+
Macro utente con contesto: {$MACRO:regex:"\.+\\"[a-z]+"}
Si noti:
- i backslash non vengono sottoposti a escape;
- i segni di virgolette sono sottoposti a escape.
Funzione macro all'interno del parametro della chiave item
Espressione regolare: .+:(\d+)$
Chiave item: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]
Si noti:
- l'espressione regolare all'interno della funzione macro
regsubè racchiusa tra doppi apici (perché contiene una parentesi chiusa); - i doppi apici attorno all'espressione regolare sono sottoposti a escape (perché l'intero terzo parametro dell'item è racchiuso tra doppi apici);
- il terzo parametro della chiave item è racchiuso tra doppi apici perché contiene una virgola.
Funzione macro LLD
Espressione regolare: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Si noti:
- i backslash non sono sottoposti a escape;
- i segni di virgolette sono sottoposti a escape.
Funzione macro LLD all'interno del contesto della macro utente
Espressione regolare: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro utente con contesto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}
Si noti:
- l'escape dei backslash per LLD non cambia;
- inserendo la macro LLD nel contesto della macro utente, dobbiamo inserirla in una stringa:
- vengono aggiunti i doppi apici attorno all'espressione macro;
- i doppi apici vengono sottoposti a escape; in totale, vengono introdotti 3 nuovi backslash.
Parametro stringa di una funzione (qualsiasi)
concat è usato come esempio.
Contenuto della stringa: \.+\"[a-z]+
Espressione: concat("abc", "\\.\\\"[a-z]+")
Si noti:
- i parametri stringa richiedono l'escape sia dei backslash sia dei doppi apici.
Funzione macro LLD all'interno del parametro stringa di una funzione
Espressione regolare: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Espressione: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")
Si noti:
- i parametri stringa richiedono l'escape sia dei backslash sia dei doppi apici;
- viene aggiunto un ulteriore livello di escape, perché la macro verrà risolta solo dopo che la stringa sarà stata privata delle virgolette;
Macro utente con contesto all'interno del parametro stringa di una funzione
Espressione regolare: \.+\"[a-z]+
Macro utente con contesto: {$MACRO:regex:"\.+\\"[a-z]+"}
Espressione: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Si noti:
- come nell'esempio precedente, è necessario un ulteriore livello di escape;
- i backslash e i doppi apici sono sottoposti a escape solo per il livello di escape superiore (in quanto parametro stringa).
Funzione macro LLD all'interno del contesto della macro utente all'interno di una funzione
Espressione regolare: \.+\"([a-z])+
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro utente con contesto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Espressione: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")
Si notino i tre livelli di escape:
- Per la funzione macro LLD, senza escape dei backslash;
- Per la macro utente con contesto, senza escape dei backslash;
- Per il parametro stringa di una funzione, con escape dei backslash.
Macro utente con contesto semplicemente all'interno di una stringa
Espressione regolare: \.+\"[a-z]+
Macro utente con contesto: {$MACRO:regex:"\.+\\"[a-z]+"}
All'interno della stringa di una qualche espressione, per esempio: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Si noti:
- anche le stringhe richiedono l'escape dei backslash;
- anche le stringhe richiedono l'escape dei doppi apici;
- ancora una volta, si tratta di un caso con 2 livelli di escape:
- Escape per il contesto della macro utente senza escape dei backslash;
- Escape dovuto al fatto che si tratta di una stringa con escape dei backslash.