2017-07-06 10 views
0

J'ai essayé d'écrire/trouver une regex qui identifiera où il y a 3+ instances consécutives d'un alpha/numérique.Regex pour identifier 3+ consécutifs de même alpha/numérique

Exemple:

CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER 

ce serait un match b/c du '**AAAAAAA**'

Merci!

+0

J'ai essayé plusieurs choses différentes. Voici le dernier que j'ai essayé ... (? I) (?: ([a-zA-Z]) \\ 1 {2,}) * – user8265973

+0

['(([[A-Za-z \ d]) \ 2 {2,})'] (https: // regex101. com/r/wMMWJH/1) –

Répondre

0

Vous pouvez le faire avec des références arrières: .*([A-Za-z0-9])\1\1.*

Ici, chaque \1 correspond au caractère correspondant dans le groupe de capture.

Expérimentez avec elle à Regex101.

+0

Merci! Celui-ci fonctionne très bien !!! – user8265973

0

Vous êtes sur la bonne voie, voici un exemple en Python:

import re 

text = "CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER" 

regex = re.compile("([A-Za-z0-9])\\1\\1") 

if re.search(regex, text): 
    print ("yuppers") 

Le regex lui-même est à la recherche d'une lettre ou un chiffre, suivi par quelque lettre ou un chiffre qu'il correspond à deux reprises. Vous pouvez faire des choses comme:

[A-Z\d]\\1{2} 

et faire l'appel de l'expression rationnelle insensible à la casse au lieu mais avec peu de regexes comme cela, je pense que l'orthographe dehors est plus facile à lire pour les autres sur la route.

0

les

echo 'CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER' | grep -E -o '([A-Z])\1{2,}' 

sorties:

AAAAAAA 

outil grep pour Unix et Linux
-E modèle est une expression régulière étendue (ERE)
-o montrent que la partie d'une ligne correspondant PATTERN
([A-Z]) correspond à un seul caractère et prend es soins du match comme référence arrière
\1{2,} utilisant cette référence arrière plus 2 ou plus égale 3 caractères ou plus

consécutive Alors:

echo 'not nn nnn oo ooo tt ttt 123 11 111' | grep -E -o '(\w)\1{2,}' 

correspondra:

nnn 
ooo 
ttt 
111 

Ou:

echo 'not nnn ooo ttt 123 111' | grep -E -o '([[:alpha:]]|[[:digit:]])\1{2,}' 

a la même sortie.

Mais peut ou vous ne savez pas peut-\w match de la _ et donc d'utiliser la classe de caractères comme [a-z] ou caractère construire en classe comme [[:alpha:]] est un meilleur choix.