https://qiita.com/jnchito/items/893c887fbf19e17d3ff9 https://qiita.com/jnchito/items/64c3fdc53766ac6f2008
Pour être honnête, je suis redevable à l'auteur de cet article. Cet article est un article de sortie de l'article ci-dessus, il peut donc être préférable de lire cet article.
"Mini langage pour rechercher et remplacer efficacement des chaînes de caractères en spécifiant un motif"
A été écrit dans l'article ci-dessus. Hmmmm. Certainement vague, mais je me souviens des "modèles", des recherches et des remplacements.
Jouez avec le site https://rubular.com/ pour apprendre les expressions régulières.
La chaîne de test ressemble à ceci.
Nom: Onikan
Tél: 03-1234-5678
Adresse: 1 Chuo-ku, Tokyo-2-3
Lorsque j'ai tapé «\ d», seule la valeur numérique était affichée en bleu. (À propos, la barre oblique inverse peut être effectuée avec l'option + \ pour mac)
En d'autres termes, «\ d» représente un nombre demi-largeur (0123456789). \ d
est aussi appelé ** meta language **, et cela signifie également qu'il représente un ensemble de caractères, il semble donc s'appeler ** classe de caractères **. Hmmmm.
C'est le ** "mini langage pour rechercher et remplacer efficacement les chaînes de caractères" ** qui est sorti plus tôt, et est-ce l'un des "modèles"?
Quoi qu'il en soit, rappelez-vous que «\ d» représente un nombre demi-largeur.
Puisque \ d
représente un nombre demi-largeur, apprenons le cas de la représentation de deux ou trois.
J'ai tapé \ d \ d- \ d \ d \ d \ d- \ d \ d \ d \ d
. Cette fois, l'ensemble y compris les traits d'union est sélectionné.
\ d \ d
représente deux nombres demi-largeur concaténés. (Comme 12 ou 34.)
text = <<-TEXT
Nom: Onikan
Tél: 03-1234-5678
Adresse: 1 Chuo-ku, Tokyo-2-3
TEXT
text.scan /\d\d-\d\d\d\d-\d\d\d\d/
# => ["03-1234-5678"]
Au fait, si vous n'êtes pas familier avec la partie de text = << - TEXT
, vous pouvez rechercher" Ruby here document ".
const text = "Nom: Onikan\n Téléphone: 03-1234-5678\n Adresse: 1 Chuo-ku, Tokyo-2-3";
text.match(/\d\d-\d\d\d\d-\d\d\d\d/g);
// => ["03-1234-5678"]
\ n
est le code de saut de ligne. g
est appelé une option globale. Il existe les différences suivantes entre avec et sans.
--Oui: lorsque le premier est trouvé, la recherche se termine. --Aucun: extrait la chaîne de caractères correspondante.
/ \ d \ d- \ d \ d \ d \ d- \ d \ d \ d \ d /
ne correspond pas à tous les nombres. Par exemple
etc. Apprenez les expressions régulières qui peuvent gérer cela. L'important ici est de trouver le ** motif ** à rechercher. Dans ce cas, c'est comme suit.
--2 à 5 nombres demi-largeur --Trait d'union -1 à 4 nombres demi-largeur --Trait d'union --4 nombres demi-largeur
Alignez-vous dans cet ordre. La nouvelle connaissance qui sort ici utilise les méta caractères «{n, m} et {n}». Puisqu'il spécifie le nombre de caractères, il est appelé un spécificateur de quantité.
{n, m}
indique que "le dernier caractère est n ou plus et m ou moins". Par exemple, s'il s'agit de «\ d {1,4}», ** nombre demi-largeur ** représente 1 à 4 caractères.
Donc, si vous l'appliquez au modèle précédent, il ressemblera à ceci.
Ce devrait être \ d {2,5} - \ d {1,4} - \ d {4}
.
Dans l'exemple ci-dessus, "03 (1234) 5678" etc. ne peut pas être pris en charge. Donc, ** je veux le changer pour qu'il puisse être utilisé avec des tirets ou des parenthèses **
Les nouveaux modèles sont "tiret ou (" et "tiret ou)". De nouvelles connaissances sortent ici.
"Un caractère de A ou B" → signifie "[AB]". (Puisqu'il représente un ensemble de caractères, c'est une sorte de classe de caractères.) Au fait, il n'y a pas de limite au nombre de caractères dans «[]». «[ABC]» représente n'importe quel caractère.
Par conséquent, "tiret ou (" est exprimé par "[- (]". "Tiret ou)" "[-)]". Écrivons le tout.
\d{2,5}[-(]\d{1,4}[-)]\d{4}
Les traits d'union peuvent avoir une signification particulière. Par exemple, «[A-Z]» signifie «A ou B ou C ou ... Z». En d'autres termes, il représente un caractère anglais pleine largeur. Autrement dit, il peut représenter une plage de caractères **. ** **
Si un trait d'union est entré au début ou à la fin de «[]» comme «[-AB]» ou «[AB-]», il sera considéré comme le trait d'union lui-même.
-- \ d
représente un nombre demi-largeur
--{n, m}
indique que le caractère précédent est n ou plus et m ou moins.
--{n}
représente exactement n caractères.
-- [ab] ʻa ou b lettre simple --
[a-z] "est une lettre de a ou b ou c ou ... z
--[-az]
représente-ou a ou z.
Comme je l'ai dit au début, cet article est un article de sortie, donc je pense que vous devriez vous y référer.
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
Recommended Posts