web-dev-qa-db-fra.com

Vérifier si la chaîne correspond au motif

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
^
245
DanielTA
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 )

378
CrazyCasta

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
127
nehemiah

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())
32
sumeet agrawal
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'
22
Marc Cohen

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

7
Joran Beasley

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.

6
Kneel-Before-ZOD