extract_all()

Ottenere tutte le corrispondenze per un'espressione regolare da una stringa di origine. Facoltativamente, recuperare un subset di gruppi corrispondenti.

print extract_all(@"(\d+)", "a set of numbers: 123, 567 and 789") // results with the dynamic array ["123", "567", "789"]

Alias deprecati: extractall()

Sintassi

extract_all(Regex, [captureGroups,] fonte)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Regex string ✔️ Espressione regolare contenente tra uno e 16 gruppi di acquisizione.
captureGroups dynamic Matrice che indica i gruppi di acquisizione da estrarre. I valori validi sono compresi tra 1 e il numero di gruppi di acquisizione nell'espressione regolare. Sono consentiti anche gruppi di acquisizione denominati. Vedere esempi.
source string ✔️ Stringa in cui effettuare la ricerca.

Restituisce

  • Se regex trova una corrispondenza nell'origine: restituisce una matrice dinamica che include tutte le corrispondenze con i gruppi di acquisizione indicati captureGroups o tutti i gruppi di acquisizione nell'espressione regolare.
  • Se il numero di captureGroups è 1: la matrice restituita ha una singola dimensione di valori corrispondenti.
  • Se il numero di captureGroups è maggiore di 1: la matrice restituita è una raccolta bidimensionale di corrispondenze multivalore per ogni selezione captureGroups o tutti i gruppi di acquisizione presenti nell'espressione regolare se captureGroups viene omesso.
  • Se non esiste alcuna corrispondenza: null.

Esempio

Estrarre un singolo gruppo di acquisizione

La query seguente restituisce la rappresentazione in byte esadecimale (due cifre esadecimale) del GUID.

print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"([\da-f]{2})", Id) 

Output

ID guid_bytes
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 ["82","b8","be","2d","df","a7","4b","d1","8f","63","24","ad","26","d3","14","49"]

Estrarre diversi gruppi di acquisizione

La query seguente usa un'espressione regolare con tre gruppi di acquisizione per suddividere ogni parte GUID in prima lettera, ultima lettera e qualsiasi elemento al centro.

print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(\w)(\w+)(\w)", Id)

Output

ID guid_bytes
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 [["8","2b8be2","d"],["d","fa","7"],["4","bd","1"],["8","f6","3"],["2","4ad26d3144","9"]]

Estrarre un subset di gruppi di acquisizione

La query seguente seleziona un subset di gruppi di acquisizione.

L'espressione regolare corrisponde alla prima lettera, all'ultima lettera e a tutte le altre.

Il parametro captureGroups viene usato per selezionare solo la prima e l'ultima parte.

print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(\w)(\w+)(\w)", dynamic([1,3]), Id) 

Output

ID guid_bytes
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 [["8","d"],["d","7"],["4","1"],["8","3"],["2","9"]]

Uso di gruppi di acquisizione denominati

Gli captureGroups nella query seguente usano sia gli indici del gruppo di acquisizione che i riferimenti ai gruppi di acquisizione denominati per recuperare i valori corrispondenti.

print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(?P<first>\w)(?P<middle>\w+)(?P<last>\w)", dynamic(['first',2,'last']), Id) 

Output

ID guid_bytes
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 [["8","2b8be2","d"],["d","fa","7"],["4","bd","1"],["8","f6","3"],["2","4ad26d3144","9"]]