Como verifico se uma sequência corresponde a esse padrão?
Letra maiúscula, número (s), letra maiúscula, número (s) ...
Exemplo, estes corresponderiam a:
A1B2
B10L1
C1N200J1
Estes não ('^' aponta para o problema)
a1B2
^
A10B
^
AB400
^
python
regex
string-matching
DanielTA
fonte
fonte
^([A-Z]\d+){1,}$
como isso?B
e não comA
.A
eB
são letras pequenas, certo?A10b
eaB400
?Respostas:
Editar: conforme observado nos comentários,
match
verifica apenas correspondências no início da sequência, enquantore.search()
corresponderá a um padrão em qualquer lugar da sequência. (Veja também: https://docs.python.org/library/re.html#search-vs-match )fonte
re.match
:If zero or more characters at the beginning of string match the regular expression pattern
. Passei apenas 30 minutos tentando entender por que não consegui encontrar algo no final de uma string. Parece que não é possívelmatch
, não é? Para isso,re.search(pattern, my_string)
funciona embora.^
no início quando você usamatch
. Eu acho que é um pouco mais complicado do que essa explicação muito simples, mas não estou claro. Você está certo de que ele começa desde o início da string.Uma linha:
re.match(r"pattern", string) # No need to compile
Você pode avaliá-lo como
bool
se necessáriofonte
import re
como primeira linhare.match
no contexto de umif
, mas precisa usá-bool
lo se estiver usando em outro lugar?re.match
. Corresponde apenas no início de uma string. Dê uma olhada em seure.search
lugar.if
verificação não está ocorrendoNone
.Por favor, tente o seguinte:
fonte
fonte
expressões regulares facilitam isso ...
[A-Z]
corresponderá exatamente a um caractere entre A e Z\d+
corresponderá a um ou mais dígitos()
agrupar coisas (e também devolver coisas ... mas, por enquanto, apenas pense nelas)+
seleciona 1 ou maisfonte
Acredito que isso funcione para um padrão numérico maiúsculo .
fonte