À propos des expressions régulières dans Ruby

À propos des expressions régulières Ruby Concernant les expressions régulières que j'ai apprises dans le cursus l'autre jour, j'étais dans un état de "beaucoup de codes sont écrits ...", j'ai donc écrit un article qui sert aussi d '"organisation de ce que j'ai appris" et de "sortie d'apprentissage".
  • Qu'est-ce qu'une expression régulière?

C'est l'une des méthodes pour exprimer un ensemble de chaînes de caractères sous la forme d'une chaîne de caractères. Aussi appelée expression régulière, cette traduction est relativement utilisée dans le domaine de la théorie du langage formel. Dans de rares cas, on l'appelle également une expression normale. (Extrait de wikipedia https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE)

Il est difficile de comprendre si c'est juste cela, alors quand je touche l'application, il y a beaucoup de choses comme "Si le mot de passe est inférieur à 6 caractères, vous ne pouvez pas vous inscrire" ou "Si le numéro de téléphone contient un trait d'union ...". Alors, comment prenez-vous cette décision?

Par exemple, lors de l'enregistrement d'un numéro de téléphone

id name tel
1 Monsieur A 090-0000-0000
2 Monsieur B 09000000000

M. A → Inscrivez-vous avec tiret M. B → Inscrivez-vous sans tiret

Une telle situation est née. Si tel est le cas, il sera géré dans un format différent, il est donc plus facile à gérer s'il est unifié. À ce moment-là, "Effacez les traits d'union supplémentaires! ], Ce sera plus facile à gérer. De cette manière, "La chaîne de caractères contient-elle un caractère spécifique?" , Et la technologie qui effectue un traitement tel que "supprimer un caractère spécifique" est une expression régulière. Les expressions régulières peuvent être représentées par un code similaire dans différentes langues, donc une fois que vous vous souvenez de la forme, vous pouvez l'appliquer à d'autres langues.

  • Méthode d'expression régulière

Dans Ruby, les trois méthodes suivantes sont principalement importantes et souvent utilisées.

sous-méthode Cette méthode remplace la partie spécifiée d'une chaîne de caractères par une autre chaîne de caractères. Par exemple, utilisez le code ci-dessous.
 greeting = "Hello,world"
=>"Hello,world"

 greeting.sub(/Hello/,"Good morning")
=>"Good morning,world" 

J'ai pu remplacer la chaîne "Hello" incluse dans / par "Good morning".

méthode muchch Cette méthode est utilisée pour déterminer si la chaîne de caractères spécifiée dans l'argument est incluse dans la chaîne de caractères appelée.
 greeting = "Hello,world"
=>"Hello,world"

 greeting.mutch(/Hello/)
=> #<MatchData "Hello">

greeting.match(/Good morning/)
=> nil 

Comme mentionné ci-dessus, la chaîne de caractères affectée à la salutation est "Hello, world", donc si l'argument est spécifié par / Hello / dans la méthode de correspondance, "Hello" est appelé en tant que MatchDate. Cependant, si l'argument est spécifié comme / Bonjour /, la chaîne de caractères ne sera pas incluse dans la chaîne de caractères affectée, donc "nil" sera affiché.

méthode gsub Similaire à la méthode sub, c'est une méthode pour remplacer une chaîne de caractères, mais en ajoutant g (méthode globale), la chaîne de caractères spécifiée dans la chaîne de caractères peut être ajoutée. Si plus d'un est inclus, il a pour rôle de tous les remplacer. Prenons un numéro de téléphone comme exemple
telA = '090-0000-0000'
=> "090-00000-0000"

telA.gsub(/-/,'')
=> "090000000000"

De cette façon, j'ai pu supprimer le trait d'union entouré par /. Comme décrit ci-dessus, vous pouvez restreindre la chaîne de caractères en spécifiant la chaîne de caractères à supprimer ou la chaîne de caractères à inclure dans la méthode. La méthode de description pour la spécification est résumée ci-dessous, veuillez donc vous y référer si vous avez une chance de l'utiliser.

modèle sens
[a-z] Correspond à l'une des lettres de a à z
\d Match numéros
[a-z\d] Correspond à l'un des caractères alphanumériques
{n,m} Correspond au caractère précédent qui apparaît au moins n fois et au plus m fois
i Rechercher sans faire la distinction entre les majuscules et les minuscules (ajouter à la fin)
. Correspond à n'importe quel caractère
+ Le caractère précédent correspond à une ou plusieurs répétitions
\A Le caractère immédiatement après correspond à la chaîne de caractères au début
\z Faire correspondre le caractère précédent à la dernière chaîne de caractères
[Ah-Hmm-Un-龥] Correspond à Kana, Kana ou Kanji entre crochets
?= Correspond à la chaîne de caractères immédiatement après le caractère défini
*? Vérifiez la chaîne de caractères dans laquelle le jeu de caractères immédiatement avant continue 0 fois ou plus,?Renvoie un caractère lorsque le caractère immédiatement après
/\A(?=.?[a-z])(?=.?[\d])[a-z\d]+\z/i Il commence par n'importe quel caractère 0 ou plus et commence par des caractères alphanumériques, et se termine par une ou plusieurs chaînes alphanumériques consécutives, et est insensible à la casse (peut être utilisé lors de la vérification de mots de passe alphanumériques mixtes, etc.) )

Recommended Posts