Comment vérifier si une chaîne correspond à ce modèle?
Majuscule, chiffre (s), majuscule, chiffre (s) ...
Exemple, ceux-ci correspondraient à:
A1B2
B10L1
C1N200J1
Ce ne serait pas ('^' points à problème)
a1B2
^
A10B
^
AB400
^
import re
pattern = re.compile("^([A-Z][0-9]+)+$")
pattern.match(string)
Edit: Comme indiqué dans les commentaires, match
ne vérifie que les correspondances au début de la chaîne, tandis que re.search()
correspond à un motif n’importe où dans la chaîne. (Voir aussi: https://docs.python.org/library/re.html#search-vs-match )
One-Liner: re.match(r"pattern", string) # No need to compile
import re
>>> if re.match(r"hello[0-9]+", 'hello1'):
... print('Yes')
...
Yes
Vous pouvez l'évaluer en tant que bool
si nécessaire
>>> bool(re.match(r"hello[0-9]+", 'hello1'))
True
S'il vous plaît essayez ce qui suit:
import re
name = ["A1B1", "djdd", "B2C4", "C2H2", "jdoi","1A4V"]
# Match names.
for element in name:
m = re.match("(^[A-Z]\d[A-Z]\d)", element)
if m:
print(m.groups())
import re
import sys
prog = re.compile('([A-Z]\d+)+')
while True:
line = sys.stdin.readline()
if not line: break
if prog.match(line):
print 'matched'
else:
print 'not matched'
les expressions régulières rendent cela facile ...
[A-Z]
correspond exactement à un caractère entre A et Z
\d+
correspondra à un ou plusieurs chiffres
()
grouper des choses (et aussi renvoyer des choses ... mais pour le moment, pensez à leur groupement)
+
sélectionne 1 ou plus
import re
ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
Je pense que cela devrait fonctionner pour un motif majuscule, nombre.