Tous les produits
Search
Centre de documentation

Simple Log Service:Fonctions d'expression régulière

Dernière mise à jour :Aug 18, 2026

Utilisez les fonctions d'expression régulière pour extraire, faire correspondre, remplacer et diviser des chaînes dans les requêtes SQL et SPL.

Fonctions d'expression régulière

SLS prend en charge les fonctions d'expression régulière suivantes, qui utilisent toutes la syntaxe RE2.

Important

Si vous souhaitez utiliser des chaînes dans des instructions analytiques, vous devez les entourer de guillemets simples (''). Les chaînes non entourées de guillemets ou entourées de guillemets doubles ("") indiquent des noms de champ ou de colonne. Par exemple,

'status'

indique la chaîne « status », tandis que

status

ou

"status"

indique le champ de journal « status ».

Fonction

Syntaxe

Description

SQL

SPL

Fonction regexp_extract_all

regexp_extract_all(x, expression régulière)

Renvoie un tableau contenant toutes les sous-chaînes correspondant à une expression régulière.

×

regexp_extract_all(x, expression régulière, n)

Renvoie sous forme de tableau le groupe de capture spécifié pour toutes les correspondances.

×

Fonction regexp_extract

regexp_extract(x, expression régulière)

Renvoie la première sous-chaîne correspondant à une expression régulière.

regexp_extract(x, expression régulière, n)

Renvoie le n-ième groupe de capture de la première correspondance.

Fonction regexp_extract_bool

regexp_extract_bool(x, expression régulière)

Convertit la première correspondance en BOOLEAN. Renvoie null si la conversion échoue.

×

regexp_extract_bool(x, expression régulière, n)

Convertit le groupe de capture spécifié de la première correspondance en BOOLEAN. Renvoie null si la conversion échoue.

×

Fonction regexp_extract_long

regexp_extract_long(x, expression régulière)

Convertit la première correspondance en BIGINT. Renvoie null si la conversion échoue.

×

regexp_extract_long(x, expression régulière, n)

Convertit le groupe de capture spécifié de la première correspondance en BIGINT. Renvoie null si la conversion échoue.

×

Fonction regexp_extract_double

regexp_extract_double(x, expression régulière)

Convertit la première correspondance en DOUBLE. Renvoie null si la conversion échoue.

×

regexp_extract_double(x, expression régulière, n)

Convertit le groupe de capture spécifié de la première correspondance en DOUBLE. Renvoie null si la conversion échoue.

×

Fonction regexp_extract_map

regexp_extract_map(x, expression régulière, clés)

Mappe les clés fournies aux correspondances de leur groupe de capture respectif.

×

regexp_extract_map(x, expression régulière)

Mappe le premier groupe de capture en tant que clés et le second en tant que valeurs.

×

Fonction regexp_like

regexp_like(x, expression régulière)

Vérifie si une chaîne correspond à une expression régulière.

Fonction regexp_replace

regexp_replace(x, expression régulière)

Supprime toutes les sous-chaînes correspondant à une expression régulière.

regexp_replace(x, expression régulière, chaîne de remplacement)

Remplace toutes les sous-chaînes correspondant à une expression régulière par une chaîne de remplacement.

Fonction regexp_split

regexp_split(x, expression régulière)

Divise une chaîne selon une expression régulière et renvoie les sous-chaînes résultantes dans un tableau.

×

Remarque

Pour extraire un guillemet simple (') à l'aide d'une fonction d'expression régulière, échappez-le en le doublant : ''. L'exemple 3 de la fonction regexp_extract illustre cette approche.

Fonction regexp_extract_all

Extrait toutes les sous-chaînes correspondant à une expression régulière d'une chaîne source.

Syntaxe

  • Renvoie toutes les sous-chaînes correspondantes sous forme de tableau.

    regexp_extract_all(x, regular expression)
  • Renvoie toutes les correspondances d'un groupe de capture spécifié sous forme de tableau.

    regexp_extract_all(x, regular expression, n)

Paramètres

Paramètre

Description

x

La chaîne source. Elle doit être de type VARCHAR.

expression régulière

L'expression régulière. Elle doit contenir des groupes de capture lorsque le paramètre n est spécifié. Par exemple, (\d)(\d)(\d) spécifie trois groupes de capture.

n

L'index du groupe de capture. Doit être un entier supérieur ou égal à 1.

Valeur de retour

ARRAY

Exemples

  • Exemple 1 : extrayez tous les chiffres du champ server_protocol.

    • Champ d'exemple

      server_protocol:HTTP/2.0
    • Instruction de requête et d'analyse (Test)

      *| SELECT regexp_extract_all(server_protocol, '\d+')
    • Résultats de la requête et de l'analyse : la requête renvoie ["2","0"] dans la colonne _col0, ce qui correspond à toutes les sous-chaînes numériques extraites de HTTP/2.0.

  • Exemple 2 : extrayez la sous-chaîne « Chrome » du champ http_user_agent et comptez les requêtes Chrome.

    • Champ d'exemple

      http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1
    • Instruction de requête et d'analyse (Test)

      *| SELECT regexp_extract_all(http_user_agent, '(Chrome)',1) AS Chrome, count(*) AS count GROUP BY Chrome
    • Résultats de la requête et de l'analyse : la colonne Chrome renvoie ["Chrome"] et la colonne count renvoie 103440.

Fonction regexp_extract

Extrait la première sous-chaîne correspondant à une expression régulière d'une chaîne source.

Syntaxe

  • Renvoie la première sous-chaîne correspondant à une expression régulière.

    regexp_extract(x, regular expression)
  • Renvoie la sous-chaîne correspondant au n-ième groupe de capture.

    regexp_extract(x, regular expression, n)

Paramètres

Paramètre

Description

x

La chaîne source. Elle doit être de type VARCHAR.

expression régulière

L'expression régulière. Elle peut contenir des groupes de capture. Par exemple, (\d)(\d)(\d) contient trois groupes de capture.

n

L'index du groupe de capture (indice 1). Doit être un entier positif.

Valeur de retour

Renvoie une chaîne VARCHAR.

Exemples

SQL

  • Exemple 1 : extrayez le premier chiffre du champ server_protocol.

    • Champ d'exemple

      server_protocol:HTTP/2.0
    • Instruction de requête (Test)

      *|SELECT regexp_extract(server_protocol, '\d+')
    • La requête renvoie une colonne nommée _col0 avec la valeur 2.

  • Exemple 2 : extrayez le nom de fichier du champ request_uri et comptez les requêtes par fichier.

    • Champ d'exemple

      request_uri:/request/path-3/file-5
    • Instruction de requête (Test)

      * | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) AS file, count(*) AS count GROUP BY file
    • Résultat d'exemple : la colonne file est file-5 et la colonne count est 17127.

  • Exemple 3 : extrayez le guillemet simple (') et les chiffres du champ message.

    • Champ d'exemple

      message:error'1232
    • Instruction de requête

      * | SELECT regexp_extract(message, '''\d+') 
      Remarque

      Pour faire correspondre un guillemet simple ('), vous devez l'échapper en le doublant : '' dans la chaîne d'expression régulière.

    • Le résultat est '1232.

SPL

  • Exemple 1 : extrayez le premier chiffre du champ server_protocol.

    • Champ d'exemple

server_protocol:HTTP/2.0
  • Instruction de requête

* | extend a = regexp_extract(server_protocol, '\d+')
  • Résultat

a:  2
  • Exemple 2 : extrayez la partie fichier du champ request_uri.

    • Champ d'exemple

request_uri:/request/path-3/file-5
  • Instruction de requête

* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
  • Résultat

Le résultat est a: file-5.

  • Exemple 3 : extrayez le guillemet simple (') et les chiffres du champ message.

    • Champ d'exemple

message:error'1232
  • Instruction de requête

* | extend a = regexp_extract(message, '''\d+') 

Remarque

Pour faire correspondre un guillemet simple ('), vous devez l'échapper en le doublant : '' dans la chaîne d'expression régulière.

  • Résultat

1  12-19 10:39:33
   a: '1232

Fonction regexp_extract_bool

Extrait la première sous-chaîne correspondante et la convertit en BOOLEAN (« true »/« false », sans distinction de casse). Renvoie null en cas d'échec.

Syntaxe

  • Convertit la première correspondance en BOOLEAN. Renvoie null en cas d'échec.

    regexp_extract_bool(x, regular expression)
  • Convertit le groupe de capture spécifié issu de la première correspondance en BOOLEAN. Renvoie null en cas d'échec.

    regexp_extract_bool(x, regular expression, n)

Paramètres

Paramètre

Description

x

La chaîne source. Ce paramètre est de type VARCHAR.

expression régulière

Une expression régulière contenant des groupes de capture. Par exemple, (\d)(\d)(\d) spécifie trois groupes de capture.

n

L'index du groupe de capture à extraire. Ce paramètre est un entier dont l'indexation commence à 1.

Type de valeur renvoyée

Type BOOLEAN.

Exemples

  • Extraire une valeur booléenne d'un champ.

    • Champ d'exemple

      false 
    • Instruction de requête et d'analyse (Test)

      *| select regexp_extract_bool('false', '[a-zA-Z]+')
    • Résultats de la requête et de l'analyse

      Renvoie une seule colonne _col0 avec une ligne de données. La valeur est false.

Fonction regexp_extract_long

Extrait une sous-chaîne correspondant à une expression régulière et la convertit en BIGINT. Renvoie null si la conversion échoue.

Syntaxe

  • Extrait la première correspondance et la convertit en BIGINT.

    regexp_extract_long(x, regular expression)
  • Convertit le groupe de capture spécifié issu de la première correspondance en BIGINT.

    regexp_extract_long(x, regular expression, n)

Paramètres

Paramètre

Description

x

La chaîne source. Ce paramètre est de type VARCHAR.

expression régulière

Une expression régulière contenant des groupes de capture. Par exemple, (\d)(\d)(\d) contient trois groupes de capture.

n

L'index du groupe de capture à extraire. L'index est un entier dont l'indexation commence à 1.

Type de valeur renvoyée

BIGINT

Exemples

  • Extraire le nombre du champ time.

    • Champ d'exemple

      time:19/Dec/2024:06:16:06
    • Instruction de requête (Test)

      *|SELECT regexp_extract_long(time, '(\d{2})/', 1) 
    • Résultats de la requête et de l'analyse

      Renvoie une colonne nommée _col0 qui contient deux lignes, chacune avec la valeur 19.

Fonction regexp_extract_double

Extrait une sous-chaîne correspondant à une expression régulière et la convertit en DOUBLE. Renvoie null si la conversion échoue.

Syntaxe

  • Convertit la première correspondance en DOUBLE. Renvoie null en cas d'échec.

    regexp_extract_double(x, regular expression)
  • Convertit le groupe de capture spécifié issu de la première correspondance en DOUBLE. Renvoie null en cas d'échec.

    regexp_extract_double(x, regular expression, n)

Paramètres

Paramètre

Description

x

La chaîne source. Son type doit être VARCHAR.

expression régulière

Une expression régulière contenant des groupes de capture. Par exemple, (\d)(\d)(\d) spécifie trois groupes de capture.

n

L'index du groupe de capture à extraire. L'index est un entier commençant à 1.

Type de valeur renvoyée

double

Exemples

  • Extraire le nombre à virgule flottante du champ server_protocol.

    • Champ d'exemple

      server_protocol:HTTP/1.1
    • Instruction de requête et d'analyse (Test)

      *|SELECT regexp_extract_double(server_protocol, '\d+\.\d+') 
    • Résultats de la requête et de l'analyse

      Renvoie une colonne nommée _col0. Cette colonne contient deux lignes, chacune avec la valeur 1.1.

Fonction regexp_extract_map

Extrait les sous-chaînes correspondant aux groupes de capture dans une expression régulière et les renvoie sous forme de map clé-valeur.

Syntaxe

  • Crée une map en associant les clés fournies aux sous-chaînes correspondant aux groupes de capture respectifs.

regexp_extract_map(x, regular expression, keys)
  • Crée une map en utilisant une expression régulière avec deux groupes de capture qui correspondent respectivement aux clés et aux valeurs.

regexp_extract_map(x, regular expression)

Paramètres

Paramètre

Description

x

La chaîne source à rechercher. Le type de données est VARCHAR.

expression régulière

Une expression régulière contenant des groupes de capture. Par exemple, (\d)(\d)(\d) spécifie trois groupes de capture.

keys

Les noms de clés pour les sous-chaînes capturées. Le type de données est ARRAY(VARCHAR). Le nombre de clés doit correspondre au nombre de groupes de capture dans l'expression régulière.

Type de valeur renvoyée

MAP(VARCHAR, VARCHAR)

Exemples

  • Exemple 1 : Extraire le nom du protocole et la version du champ server_protocol.

    • Champ d'exemple

      server_protocol: 'HTTP/2.0'
    • Instruction de requête

      select regexp_extract_map(server_protocol, '(\w+)/([\d\.]+)', array['name', 'version']) as protocol
    • Résultats de la requête et de l'analyse

      La requête renvoie la map suivante dans la colonne protocol : {"name":"HTTP","version":"2.0"}.

  • Exemple 2 : Extraire toutes les paires clé-valeur du champ content.

    • Champ d'exemple

      content: 'verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+"'
    • Instruction de requête

      select regexp_extract_map(content, '(\w+)="([^"]*)"') as args
    • Données de sortie

      {"latency":"45.911µs","verb":"GET","userAgent":"kube-probe/1.30+","URI":"/healthz"}

Fonction regexp_like

Vérifie si une chaîne correspond à une expression régulière.

Syntaxe

regexp_like(x, regular expression)

Paramètres

Paramètre

Description

x

La chaîne source. Doit être de type VARCHAR.

expression régulière

Le modèle d'expression régulière à faire correspondre.

Type de valeur renvoyée

BOOLEAN

Exemples

SQL

Vérifier si le champ server_protocol contient des chiffres.

  • Champ d'exemple

    server_protocol:HTTP/2.0
  • Instruction de requête et d'analyse (Test)

    *| select regexp_like(server_protocol, '\d+')
  • La requête renvoie deux lignes. Les deux valeurs sont true. Cela indique que la valeur du champ server_protocol correspond à l'expression régulière \d+ (contient des chiffres).

SPL

Vérifier si le champ server_protocol contient des chiffres.

  • Champ d'exemple

server_protocol:HTTP/2.0
  • Instruction de requête et d'analyse

* |extend a = regexp_like(server_protocol, '\d+')
  • Résultats de la requête et de l'analyse

1  12-18 19:34:20  1.2.3.4
        a: true

Fonction regexp_replace

Supprime ou remplace les sous-chaînes correspondant à une expression régulière.

Syntaxe

  • Supprime toutes les sous-chaînes d'une chaîne source qui correspondent à une expression régulière.

    regexp_replace(x, regular expression)
  • Remplace toutes les sous-chaînes correspondant à une expression régulière par une chaîne de remplacement.

    regexp_replace(x, regular expression, replace string)

Paramètres

Paramètre

Description

x

La chaîne source à rechercher. Ce paramètre doit être de type VARCHAR.

expression régulière

Le modèle d'expression régulière.

chaîne de remplacement

La chaîne de remplacement. Si omise, les sous-chaînes correspondantes sont supprimées.

Type de valeur renvoyée

VARCHAR

Exemples

SQL

  • Exemple 1 : Dans le champ region, remplacer les noms de région commençant par cn par China, puis compter le nombre de requêtes provenant de Chine.

    • Champ d'exemple

      region:cn-shanghai
    • Instruction de requête et d'analyse (Test)

      * | select regexp_replace(region, 'cn.*','China') AS region, count(*) AS count GROUP BY region
    • Résultats de la requête et de l'analyse : la requête renvoie une seule ligne où la colonne region est China et la colonne count est 168871.

  • Exemple 2 : Supprimer le numéro de version du champ server_protocol et compter les requêtes par protocole.

    • Champ d'exemple

      server_protocol:HTTP/2.0
    • Instruction de requête et d'analyse (Test)

      *| select regexp_replace(server_protocol, '.\d+') AS server_protocol, count(*) AS count GROUP BY server_protocol
    • Résultats de la requête et de l'analyse : la requête renvoie une seule ligne où server_protocol est HTTP et count est 168871.

SPL

  • Exemple 1 : Remplacer tous les noms de région dans la valeur du champ region commençant par « cn » par China.

    • Champ d'exemple

region:cn-shanghai
  • Instruction de requête et d'analyse

* | extend a = regexp_replace(region, 'cn.*','China')
  • Résultats de la requête et de l'analyse

    1  12-18 19:34:20  1.2.3.4
       a: China
  • Exemple 2 : Supprimer le numéro de version de la valeur du champ server_protocol.

    • Champ d'exemple

server_protocol:HTTP/2.0
  • Instruction de requête et d'analyse (Test)

* | extend a = regexp_replace(server_protocol, '.\d+')
  • Résultats de la requête et de l'analyse

La requête renvoie une entrée de journal qui inclut un horodatage, l'adresse IP de destination 1.2.3.4 et le champ server_protocol avec le numéro de version supprimé.

Fonction regexp_split

Divise une chaîne source en un tableau de sous-chaînes en utilisant une expression régulière comme délimiteur.

Syntaxe

regexp_split(x, regular expression)

Paramètres

Paramètre

Description

x

La chaîne source. Son type de données est VARCHAR.

expression régulière

Le modèle d'expression régulière utilisé comme délimiteur.

Type de valeur renvoyée

array

Exemple

Utiliser une barre oblique (/) pour diviser la valeur du champ request_uri.

  • Champ d'exemple

    request_uri:/request/path-0/file-7
  • Instruction de requête et d'analyse (Test)

    * | SELECT regexp_split(request_uri,'/')
  • Les résultats de la requête et de l'analyse sont ["","request","path-0","file-7"].