Expression régulière pour vérifier pour la répétition de caractères
J'ai dû créer une expression régulière qui permet dans le texte "*" (cas indépendant) OU caractères dans les gammes a-z, A-Z et 0-9 qui doit être de 17 caractères. Ce que j'ai fait sans aucun problème:
^([\*][Aa][Ll][Ll]|[a-zA-Z0-9]{17})$
Le problème que j'ai est de savoir comment le modifier pour qu'il ramasse si seulement le même personnage est entré dans un certain nombre de fois (par exemple, 17 x).
Si vous utilisez egrep vous pouvez faire la recherche insensible à la casse en utilisant le flag '-l'. Qui vous permettrait de simplifier votre expression le long des lignes de norbitheeviljester de réponse.
Désolé, c'est '-i'.
Désolé, c'est '-i'.
OriginalL'auteur user1645365 | 2012-09-04
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, vous devrez utiliser la capture des parenthèses. C'est un concept dans lequel ce qui vous entourent avec des parenthèses seront capturées dans la mémoire de l'expression régulière de l'analyseur.
Donc, si vous avez l'expression suivante:
elle correspond à un seul caractère de mot:
[a-zA-Z0-9_]
et le même caractère(s) d'après elle. Parce que les parenthèses pris et de mémoriser ce qui a été stocké à l'intérieur d'eux.Donc dans votre cas:
où l' (?:) est un non parenthèse capturante.
Vous pouvez également utiliser le
\1{1,17}
construire ce qui signifie que le caractère doit être répété de 1 à 17 fois.Sur une autre note, je pense que l'utilisation d'une expression régulière est un peu exagéré.
Vous devriez probablement vous enregistrez la chaîne, il minuscules puis de le comparer '*'. Si ce n'est pas l'égalité, alors vous pouvez utiliser l'expression régulière
^([a-zA-Z0-9])\1{17}$
pour BEAUCOUP plus de lisibilité.^
n'appartient qu'à la première variante de l' ==>^(?:\*[aA][lL]{2}|([a-zA-Z0-9])\1{17})$
merci, a ajouté crochets
OriginalL'auteur norbitheeviljester
vous pouvez utiliser une référence arrière, si votre langage de mise en œuvre prend en charge
essayer
([a-zA-Z0-9])\1{16}
la
\1
se réfère à l'ancien groupe apparié()
OriginalL'auteur Hachi
Regexr:
Non-capture:
Deuxième partie de l'expression régulière,
([a-zA-Z0-9])\1{16}
, correspond à un caractère alphanumérique, puis répète les mêmes 16 fois plus.De capture:
Si vous voulez capturer toute chose, supprimer
?:
(ce qui veut dire de ne pas capturer ce groupe) et le changement de\1
à\2
:Matches:
Ne correspond pas:
OriginalL'auteur mmdemirbas
Essayez celui-
OriginalL'auteur Sandy8086