Sprawdź czy ciąg pasuje do wzoru

Jak sprawdzić, czy łańcuch pasuje do tego wzoru?

Wielka Litera, liczba (y), wielka litera, liczba(y)...

Przykład, te pasują:

A1B2
B10L1
C1N200J1

These wouldn ' t ('^'wskazuje na problem)

a1B2
^
A10B
   ^
AB400
^
Author: Mridang Agarwalla, 2012-09-26

6 answers

import re
pattern = re.compile("^([A-Z][0-9]+)+$")
pattern.match(string)

Edit: jak zaznaczono w komentarzach match sprawdza tylko dopasowania na początku łańcucha, podczas gdy {[2] } dopasuje wzór w dowolnym miejscu łańcucha. (Zobacz też: https://docs.python.org/library/re.html#search-vs-match )

 516
Author: CrazyCasta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-08 16:40:23

One-liner: re.match(r"pattern", string) # No need to compile

import re
>>> if re.match(r"hello[0-9]+", 'hello1'):
...     print('Yes')
... 
Yes

Możesz ocenić jako bool w razie potrzeby

>>> bool(re.match(r"hello[0-9]+", 'hello1'))
True
 213
Author: nehem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-23 23:06:03

Proszę spróbować:

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())
 41
Author: sumeet agrawal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-12 10:54:50
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'
 25
Author: Marc Cohen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 05:32:15

Wyrażenia regularne ułatwiają to ...

[A-Z] dopasuje dokładnie jeden znak pomiędzy A i z

\d+ dopasuje jedną lub więcej cyfr

() grupowanie rzeczy (a także zwracanie rzeczy... ale na razie tylko pomyśl o nich)

+ wybiera 1 lub więcej

 8
Author: Joran Beasley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 05:35:48
  
import re

ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
  


Uważam, że to powinno zadziałać na wzór wielkiej litery, liczby.

 8
Author: Kneel-Before-ZOD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 06:10:00