¿Cómo verifico si una cadena coincide con este patrón?
Letra mayúscula, número (s), letra mayúscula, número (s) ...
Ejemplo, estos coincidirían:
A1B2
B10L1
C1N200J1
Estos no ('^' apunta al problema)
a1B2
^
A10B
^
AB400
^
python
regex
string-matching
DanielTA
fuente
fuente
^([A-Z]\d+){1,}$
¿Me gusta esto?B
y no conA
.A
yB
son minúsculas ¿verdad?A10b
yaB400
?Respuestas:
Editar: como se señaló en los comentarios
match
, solo se comprueban las coincidencias al comienzo de la cadena, mientrasre.search()
que coincidirá con un patrón en cualquier lugar de la cadena. (Ver también: https://docs.python.org/library/re.html#search-vs-match )fuente
re.match
:If zero or more characters at the beginning of string match the regular expression pattern
. Pasé como 30 minutos tratando de entender por qué no podía hacer coincidir algo al final de una cadena. Parece que no es posible conmatch
, ¿verdad? Sinre.search(pattern, my_string)
embargo , para eso funciona.^
al principio cuando lo usasmatch
. Creo que es un poco más complicado que esa explicación muy simple, pero no estoy claro. Sin embargo, tienes razón en que comienza desde el principio de la cadena.Un trazador de líneas:
re.match(r"pattern", string) # No need to compile
Puedes evaluarlo como
bool
sea necesariofuente
import re
como la primera líneare.match
en el contexto de unif
, pero tienes que usarlobool
si lo estás usando en otro lugar?re.match
. Solo coincide al comienzo de una cadena. Echa un vistazo a sure.search
lugar.if
verifica que no haya coincidenciaNone
.Por favor intenta lo siguiente:
fuente
fuente
las expresiones regulares hacen que esto sea fácil ...
[A-Z]
coincidirá exactamente con un personaje entre A y Z\d+
coincidirá con uno o más dígitos()
agrupar cosas (y también devolver cosas ... pero por ahora solo piense en ellas agrupando)+
selecciona 1 o másfuente
Creo que debería funcionar para un patrón de mayúsculas y números .
fuente