566 Stimmen

Prüfen, ob Zeichenkette mit Muster übereinstimmt

Wie prüfe ich, ob eine Zeichenfolge diesem Muster entspricht?

Großbuchstabe, Zahl(en), Großbuchstabe, Zahl(en)...

Beispiel: Diese würden übereinstimmen:

A1B2
B10L1
C1N200J1

Diese würden nicht ('^' weist auf das Problem hin)

a1B2
^
A10B
   ^
AB400
^

717voto

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

398voto

nehem Punkte 10704

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

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

Sie können es auswerten als bool falls erforderlich

>>> bool(re.match(r"hello[0-9]+", 'hello1'))
True

58voto

sumeet agrawal Punkte 551

Bitte versuchen Sie Folgendes:

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())

32voto

Marc Cohen Punkte 3712
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'

32voto

Ali Sajjad Punkte 1803

Vorsichtig! (Vielleicht möchten Sie prüfen, ob FULL string übereinstimmt)

En re.match(...) funktioniert nicht, wenn Sie die gesamte Zeichenkette abgleichen wollen.

Zum Beispiel;

  • re.match("[a-z]+", "abcdef") wird eine Übereinstimmung ergeben
  • Aber! re.match("[a-z]+", "abcdef 12345") ergibt auch eine Übereinstimmung, weil ein Teil der Zeichenkette übereinstimmt (vielleicht wollen Sie das nicht, wenn Sie prüfen, ob die gesamte Zeichenkette gültig ist oder nicht)

Lösung

Utilice re.fullmatch(...) . Dies gilt nur, wenn die

if re.fullmatch("[a-z]+", my_string):
    print("Yes")
Beispiel
  • re.fullmatch("[a-z]+", "abcdef") Ja
  • re.fullmatch("[a-z]+", "abcdef 12345") Nein

One liner: bool(re.fullmatch("[a-z]+", my_string))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X