J'essaie d'extraire un champ éphémère avec la commande parse
. Malheureusement, le format du journal est tel que l'expression glob n'est pas suffisante pour cela, j'ai donc besoin d'utiliser l'expression régulière. Le regex lui-même est très bien, mais je ne peux tout simplement pas faire la commande pour extraire quoi que ce soit.
J'essaie avec:
parse @endpoint /^([a-zA-Z_]+)[\/|?]*.*/ as @clean_endpoint
Le premier groupe est ce que je recherche ici et j'ai essayé avec différents types de citations, etc. Ce pourrait être juste une erreur de formatage stupide, mais je ne peux pas le trouver.
À peu près la seule documentation mentionnant la commande parse
est ici et l'exemple qui utilise les expressions glob. Impossible de trouver des exemples en recherchant sur Google non plus.
Alors, quelqu'un est tombé sur cela et l'a résolu?
Je ne sais pas si vous avez trouvé la réponse à cela, mais lorsque vous utilisez regex avec parse, vous ne pouvez pas nommer les champs éphémères comme vous le faites avec glob.
Lorsque vous utilisez des expressions globales, vous nommez le nouveau champ avec "as ___" à la fin de votre instruction. Lorsque vous essayez cela avec une expression régulière, cela ne fonctionne pas.
parse @message ((glob expression here)) as ephem_field
Lorsque vous utilisez l'expression régulière, les nouveaux champs doivent être nommés dans l'expression elle-même en tant que groupe nommé.
parse @message /(?<clean_endpoint>^([a-zA-Z_]+)[\/|?]*.*)/
Bien que l'expression régulière vous permette de nommer un groupe à l'aide de guillemets simples 'name'
ou équerres <name>
J'ai remarqué qu'AWS CloudWatch Insights n'acceptera que les crochets inclinés lors de la dénomination des groupes. Lorsque j'essayais avec des guillemets simples, j'ai eu des erreurs disant qu'il n'était pas en mesure de comprendre la requête.
Je ne sais pas quel type d'expression régulière AWS utilise, mais j'ai trouvé que je devais échapper à certains caractères qui seraient autorisés dans d'autres outils.