Base de Connaissance - Français

Apprenez auprès des experts.

Maîtrise de l'outil | Regex

Alteryx
Alteryx
Créé
Maîtrise de l'outil | Regex

Cet article fait partie de la série d'outils de maîtrise, une compilation des contributions de base de connaissances pour introduire des exemples de travail diversifiés pour les instruments de concepteur. Ici, nous allons plonger dans les utilisations de l'outil Regex sur notre façon de maîtriser le concepteur Alteryx:

Regex .png

L'outil Regex est un peu comme le couteau suisse de l'armée d'analyse dans Alteryx; Il ya un tas de façons que vous pouvez l'utiliser pour faire les choses plus rapidement ou plus efficacement, mais même si vous utilisez simplement la lame, il est encore immensément utile. Parfois, c'est tout ce dont vous avez besoin, mais si vous prenez le temps de comprendre comment utiliser quelques autres outils dans ce couteau, vous allez commencer à voir qu'il n'y a pas grand-chose que vous ne pouvez pas faire avec elle.

m. Bean. pngMacGyver .jpg

Avant et après l'utilisation de l'outil Regex.

Regex: qu'est-ce que c'est bon pour?

Regex est une abréviation de l'expression régulière, et vous pouvez essentiellement y penser comme une autre langue. Il utilise des symboles comme n'importe quelle autre langue, mais dans des expressions régulières ces symboles sont utilisés pour assortir des séquences de lettres, de chiffres ou de caractères dans le texte. C'est une langue qui consiste à reconnaître les modèles.

Les humains sont vraiment bons à ce genre de chose-disons que je vous ai donné ce bloc de texte:

3345 Michelson Drive, suite 400, Irvine, ca 92612

12303 Airport Way, suite 250, Broomfield, co 80021

Deux North Riverside Plaza, suite 1430, Chicago, il 60606

Vous n'auriez aucun problème à me dire que ce sont des adresses, et quelle partie est un numéro de rue ou un nom de ville. Mais un ordinateur serait juste voir un bloc de texte, et il ne serait pas soin de vérifier si c'était une adresse ou non. Regex est une façon que nous pouvons «reconnaître» les données utiles dans le texte. Let's Translate this à une version Regex:

3345 ^ /d + Le ^ signifie le début d'une ligne dans Regex, donc c'est une bonne pratique pour l'inclure avec votre motif initial. Ici, notre modèle est /d qui signifie «n'importe quel caractère numérique» (0-9). Le + signifie que nous voulons correspondre à l'expression précédente une ou plusieurs fois. Puisque la première partie de l'adresse est un numéro de rue, cela nous permet d'avoir un certain nombre de toute longueur.
Michelson Drive [^ /d] + Pour correspondre à la rue, nous devons permettre à notre expression de ramasser plusieurs mots de caractères, y compris un certain nombre d'espaces, puisque les rues seront souvent plus d'un mot. Une façon de faire correspondre ce qui est par ce que nous ne nous attendons pas à l'aide de [^ ...]. Cette notation de regroupement correspond à «n'importe quel caractère non répertorié ici». Ce que nous finissons avec correspond à une ou plusieurs fois un caractère qui n'est pas un nombre.
Suite 400 .* La partie suivante de l'adresse est un numéro de suite, qui peut être présent ou non, et qui pourrait potentiellement prendre diverses conventions de dénomination. Afin de définir une expression flexible pour correspondre à tout ce que nous voyons là-bas, nous pouvons utiliser un. pour correspondre à'n'importe quel caractère'. Le * signifie alors que nous pouvons égaler n'importe quel caractère zéro ou plusieurs fois.
Irvine [^ /d] + Comme avant, cela signifie simplement «n'importe quel caractère qui n'est pas un nombre».
Ca /u{2} Pour correspondre à l'État, nous pouvons faire usage de /Vous pour signifier «toute lettre majuscule». Puisque nous nous attendons à ce que ce soit toujours une séquence de deux lettres, nous pouvons également spécifier la longueur du match en utilisant {...} après notre expression, ou «correspondre à deux lettres majuscules».
92612 /d{5 $ Le code postal sera également venir en tant que 5 chiffres, afin que nous puissions faire quelque chose de semblable à dire «correspondre à cinq caractères de nombre». Ensuite, nous pouvons Tack sur $ pour signifier que nous attendons que ce soit la fin de la ligne actuelle.

Cheat .png

Outils du commerce

Il ya tout à fait quelques symboles utilisés pour construire des expressions Regex, mais Alteryx fournit un joli petit'cheat-sheet'droit dans l'outil pour vous.

Vous n'avez pas vraiment besoin de beaucoup plus que cela pour obtenir rouler avec l'utilisation de Regex, et un peu comme dans Alteryx, vous verrez qu'il existe de nombreuses façons différentes, vous pouvez créer une expression pour correspondre à un modèle. Alors ne transpirez pas trop les détails, et n'ayez pas peur de passer du temps avec le bon vieux "Guess-and-test" méthode d'apprentissage.

essai et erreur .jpg

Ne vous inquiétez pas, je suis classiquement entraîné.

Pour obtenir des guides plus complets sur Regex, vous pouvez également vous tourner vers le Guide de syntaxe de chaîne de format Boost-Extended, ainsi que le Guide de syntaxe Regex perl.

Alteryx a structuré la fonctionnalité Regex en quatre méthodes: match, Parse, replace %26; tokenze. Notre documentation d'aide pour ces méthodes est très bonne ainsi.

Match

La méthode match vérifie simplement si une chaîne peut être décrite par l'expression régulière donnée et vous donne une valeur true ou false. Nous allons utiliser les éléments d'expression dans le tableau ci-dessus pour correspondre à nos adresses. Vous pouvez créer une expression longue en les mettant ensemble et y compris les espaces /s et les virgules, où qu'ils apparaissent.

match .png

Les deux premières adresses correspondent très bien à l'aide de cette expression, mais la troisième adresse s'égare de ce que nous nous attendions à voir et échoue. En raison d'une règle obscure sur les bâtiments qui partagent un nom avec leur adresse, le numéro de rue est orthographié et notre expression régulière est incapable de le faire correspondre.

La clé pour écrire un bon Regex est de prévoir ces exceptions dans vos données, et de les comptabiliser dans l'expression. Afin de faire correspondre les «deux» dans cette adresse, nous allons mettre dans une autre expression pour vérifier si et seulement si celui-ci ne parvient pas à correspondre. La plupart des adresses commencent par des caractères numériques, mais si elles n'ont pas alors cette expression va vérifier un mot à la place. Voici à quoi il ressemble:

(?:^/ d +) | (?:^/ w +)

C'est beaucoup plus simple qu'il n'y paraît, et utilise vraiment deux autres symboles Regex. Le symbole de la pipe signifie «ou». Par exemple, un | b ne ferait que vérifier si une correspondance, et si elle ne fonctionne pas, si b correspond. Le deuxième symbole est (?: ...), également connu sous le nom de groupe non marqué. C'est juste une façon pour nous de regrouper ces choses ensemble pour l'opération ou.

adresse .png

En résumé, le premier groupe ici (?: ^ /) (d +) est juste faire la même chose qu'avant, mais quand il échoue l'expression tente de faire correspondre le deuxième groupe (?: ^ /) w +). Ce groupe est juste à la recherche de caractères Word (l'alphabet), et ne correspond pas à des espaces ou des chiffres. Cela nous permet de correspondre à la version Word de notre adresse ci-dessus sans problème.

Pour en savoir plus sur match:

Crédit supplémentaire: il existe de nombreuses façons de structurer Regex; commentaire ci-dessous avec une meilleure alternative pour (?: ^ /) d +) | (?:^/ w +). Pourquoi est-ce mieux?

Analyser

L'appariement est agréable en ce que vous pouvez l'utiliser pour la validation, mais la méthode parse est vraiment quand Regex vient dans son propre, vous permettant d'extraire des informations utiles à partir d'un bloc de texte. L'outil Regex rend ce facile pour nous-tout ce dont nous avons besoin est de placer des parenthèses (...) autour de chaque chose que nous voulons sortir. Ceux-ci sont appelés groupes marqués-l'homologue de nos groupes non marqués ci-dessus (?: ...).

analyser. Png

Lorsque vous tapez les parenthèses, vous verrez ces pop dans une fenêtre Sélectionner les champs de sortie de style d'outil, ce qui vous permet de renommer vos champs et de modifier leurs types de données.

Pour plus d'informations sur parse:

  • Partie 2 de l'expression régulière et Alteryx d'Adam Riley.

Remplacer

Comme vous pouvez le voir, la méthode parse est vraiment juste une extension de match qui nous permet de tirer des choses hors du texte et le placer proprement dans une nouvelle colonne. Eh bien, ce qui se passe quand nous élargissons ce concept et nous demandons: «Comment puis-je remettre des choses dans?» C'est là que la méthode de remplacement entre en vigueur.

Avec le remplacement, nous pouvons analyser des composants de notre chaîne, les remplacer, et même les réarranger. Nous pouvons le faire en spécifiant des groupes marqués pour dire à l'outil Regex ce qu'il faut remplacer et où, dans une langue n'importe qui peut comprendre ...

Dollah Bouchard

La paresse dapper est tout à fait raison, bien sûr, nous pouvons utiliser des signes dollar $ avec des chiffres pour spécifier chaque groupe marqué exact. Par exemple, $1, $2 et $3 se réfèrent respectivement aux premiers, deuxième et troisième groupes marqués. Donc, pour notre liste d'adresses, si nous voulions juste analyser une liste des villes-États, nous pouvons taper dans l'expression $4, $5.

replace1. Png

Note nous avons pu ajouter dans notre propre petite virgule là, et un espace, juste en tapant dans cette zone de texte. La méthode Replace est très flexible, et vous pouvez également l'utiliser à partir de l'outil de formule avec la fonction Regex_Replace.

Pour en savoir plus sur remplacer:

Marquer

Regex est assez astucieux quand les choses sont donnés à nous dans une belle liste, bien soigné, mais ce qui se passe si toutes ces adresses sont juste sans sous-évaluées par certains appel ou base de données API comme un bloc de texte unique?

3345 Michelson Drive, suite 400, Irvine, ca 92612, 12303 Airport Way, suite 250, Broomfield, co 80021, deux North Riverside Plaza, suite 1430, Chicago, il 60606

Eh bien, ce n'est pas très utile-c'est tout délimité par des virgules, mais nous n'avons pas de moyen facile de savoir quand une adresse se termine et une autre commence. Ce que nous avons besoin ici est la méthode de jeton, qui prendra ce morceau de texte et le diviser en colonnes ou en lignes, un peu comme l'outil Text to Columns. Il ya deux différences importantes qui désignent Regex distinguer si:

  1. Au lieu de correspondre à ce que vous ne voulez pas (comme une virgule), vous correspondez à ce que vous voulez (tout le reste).
  2. Vous avez la possibilité de choisir ce qui est divisé et ce qui est ignoré à l'aide d'un groupe marqué.

Cela peut sembler Topsy-à l'envers, mais il vous donne en fait beaucoup plus de souplesse dans ce que/comment vous fractionnez vos données. Pour illustrer, nous allons diviser notre texte d'adresse de présentation en plusieurs lignes, en utilisant la virgule comme notre délimiteur.

tok1 .png

Puisque nous devons faire correspondre tout ce que nous voulons, nous devons utiliser l'expression (. +?) (?:,|$). On va casser ça.

  • . + signifie un seul caractère. correspond à une ou plusieurs fois +
  • ? est de savoir comment nous dire ce match pour être paresseux plutôt que gourmand. Il s'agit d'une distinction vraiment utile qui peut être un peu difficile à comprendre au début, mais pour les fins de ce cours crash nous allons juste se concentrer sur ce que le? signifie: match ce qui est avant zéro fois (pas du tout) ou exactement une fois.
  • Le signe plus + est en fait le contraire: c'est un symbole avide, de sorte que le précédent un caractère. va essayer de faire correspondre une ou plusieurs fois. Alors qu'est-ce que cela signifie quand on dit quelque chose avide d'être paresseux? Eh bien, il modifie en fait à quel point il peut être gourmand en le forçant à regarder le prochain match. Et alors? signifie vraiment est: «match d'un caractère une ou plusieurs fois jusqu'à ce que vous pouvez correspondre à ce qui vient suivant».
  • Qu'est-ce qui vient ensuite un groupe non marqué (?:, | $) qui fonctionne essentiellement comme un signe d'arrêt pour le précédent (. +?). Comme il n'est pas dans le groupe marqué, il ne sera pas présent dans le résultat. C'est juste dans un groupe non marqué afin que nous puissions lui dire de chercher soit une virgule, ou la fin de la ligne $ à la fin du texte de présentation.

Ouf-c'est certainement beaucoup. N'hésitez pas à profiter de cette occasion pour s'étirer, aller faire une promenade, ou méditer.

bruit de ligne .gif

De toute évidence, l'outil Text to columns peut se diviser par des virgules plus facilement que ce qui précède, mais la souplesse de la symbolique vient à l'avant-plan lorsque nous essayons de faire quelque chose d'un tad plus utile. Par exemple, nous pouvons l'utiliser pour fractionner ce bloc d'informations d'adresse dans les trois adresses originales.

tok2 .png

Dans ce cas, nous utilisons simplement notre dernière expression de correspondance pour le code postal /d{5 pour marquer où chaque match se termine. Comme ci-dessus, nous savons que chaque ligne sera soit fin avec une virgule ou la fin de la ligne, et nous pourrions utiliser le (?:, | $) ici pour diviser ces avec succès. Dans l'exemple ci-dessus, j'ai choisi de présenter le? possibilité de faire correspondre zéro ou une fois pour remplacer ce-afin que nous puissions diviser sur une «virgule facultative» après le match de groupe marqué.

Pour plus d'informations sur le jeton:

  • Partie 2 de la Regex Adam Riley et Alteryx et un moteur fonctionne blog réponse de CTO Ned Harding.

Crédit supplémentaire: le,? ne fonctionne pas dans le cas précédent, le fractionnement par des virgules seul-(. +?),? au lieu de (. +?) (?:,|$). Pourquoi?

Commentaire avec une explication ci-dessous pour la gloire éternelle et les droits de vantardise.

Regex .png

Maintenant, vous devriez avoir une compétence de niveau expert avec l'outil Regex! Si vous pouvez penser à un cas d'utilisation, nous avons laissé de côté, n'hésitez pas à utiliser la section commentaires ci-dessous! Considérez-vous comme un maître d'outils déjà? Faites-nous savoir à Community@alteryx.com si vous souhaitez que votre outil créatif utilise pour être présenté dans la série de maîtrise d'outils.

Restez à l'écoute avec nos derniers messages chaque outil mardi en suivant Alteryx sur Twitter! Si vous souhaitez maîtriser tous les outils de concepteur, envisagez de vous abonner aux notifications par courrier électronique.

L'outil Regex est un peu comme le couteau suisse de l'armée d'analyse dans Alteryx; Il ya un tas de façons que vous pouvez l'utiliser pour faire les choses plus rapidement ou plus efficacement, mais même si vous utilisez simplement la lame, il est encore immensément utile. Parfois, c'est tout ce dont vous avez besoin, mais si vous prenez le temps de comprendre comment utiliser quelques autres outils dans ce couteau, vous allez commencer à voir qu'il n'y a pas grand-chose que vous ne pouvez pas faire avec elle.

10,0
Pièces jointes
Contributeurs
Étiquettes