0
votes

Regex simplifiée pour des nombres à 2 chiffres

J'ai une regex pour correspondre aux numéros de départ 01-15 qui fonctionne bien ^^ 0 [1-9] | [1-1] [0-5] $$ Mais je me demande s'il y a une meilleure façon de faire cela


3 commentaires

Coller avec ce Regex: ^ (?: 0 [1-9] | 1 [0-5]) Options: Terminé Itérations: 50/50 (x 1000) Matchs trouvés par itération: 15 temps écoulé : 0,98 s, 98311 ms, 983113 μs matchs par secte: 762 882


Ou, celui-ci légèrement plus rapide regex: ^ (?: 0 \ d (? itérations terminées: 50/50 (x 1000). PAR ITERATION: 15 Temps écoulé: 0,96 s, 964,21 ms, 964206 μs matchs par secte: 777 842


Le plus rapide possible est de se débarrasser de la syntaxe du groupe tout à fait, essayez ceci regex: ^ 0 [1-9] $ | ^ 1 [0-5] $ options: Terminé Itérations: 50/50 (x 1000) Correspondances trouvées par itération: 15 Temps écoulé: 0,91 S, 912,12 ms, 912121 μs correspondant par sech 822,259


3 Réponses :


3
votes

Votre motif actuel correspondra parfois aux numéros au milieu de la chaîne (plutôt que de correspondre uniquement des chaînes complètes de composées uniquement du format de numéro souhaité). Lorsque vous souhaitez alterner, mais également utiliser ^ et $ ancrages, alternent à l'intérieur d'un groupe à la place.

aussi, [1-1] est superflu - vous pouvez simplement utiliser 1 , pas besoin d'un jeu de caractères. En outre, mettre en place ^ ou $ ancrages à côté de l'autre est la même chose que d'avoir une seule de ces ancrages, alors ne les doublez pas. xxx

https://regex101.com/r/wtj84a/ 2


2 commentaires

Merci pour la réponse, mais si c'est seulement de 01-15, cela fonctionne bien: ^ 0 [1-9] | [1-1] [0-5]) $ correspondant à tous les chiffres entre eux . Cela semble correct ou peut être simplifié?


Vous devriez alterner uniquement à l'intérieur un groupe, car il semble que vous souhaitiez correspondre uniquement au début d'une chaîne ou d'une ligne. Un ensemble de caractères qui correspond uniquement qu'un seul caractère est redondant.



2
votes

Voici un moyen de le faire c'est différent.
Se soucier de la performance? C'est la voie la plus rapide de
Parce qu'il n'a pas de groupement, ce qui est une étape supplémentaire.

^ 0 [1-9] $ | ^ 1 [0-5] $

référence xxx


0 commentaires

1
votes

Je veux dire que vous pouvez le faire ^ (0 [1-9] | 1 [0-5]) $ Si vous ne voulez pas capturer: ^ (?: 0 [1-9] | 1 [0-5]) $

Le () est nécessaire pour vous assurer que le chemin 0 [1-9] ne revendique pas le ^ .

Vous pouvez l'essayer à https://www.debuggex.com/

Mais sachez que la syntaxe et la mise en œuvre peuvent varier d'une langue à la langue.


0 commentaires