Überprüfen Sie, ob die Zeichenfolge mit dem Muster übereinstimmt

Lesezeit: 4 Minuten

Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
DanielTA

Wie überprü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 ein Problem hin)

a1B2
^
A10B
   ^
AB400
^

  • Könnten Sie bitte genauer erklären, warum es ein Problem ist?

    – John Woo

    26. September ’12 um 5:29


  • ^([A-Z]d+){1,}$ so was?

    – Passanten

    26. September ’12 um 5:30

  • In Ihrem dritten Beispiel sollte das Problem bei liegen B und nicht mit A.

    – Burhan Khalid

    26. September ’12 um 5:33

  • vielleicht ist es ein Tippfehler bei dem Problem. beide A und B Sind Kleinbuchstaben richtig? A10b und aB400?

    – John Woo

    26. September ’12 um 5:34

  • @Burhan, das Problem liegt bei A, weil B Zahlen daneben hat und A nicht

    – DanielTA

    26. September ’12 um 5:39

1641663387 520 Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
CrazyCasta

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

  • Ab den Dokumenten re.match: If zero or more characters at the beginning of string match the regular expression pattern. Ich habe nur etwa 30 Minuten damit verbracht, zu verstehen, warum ich etwas am Ende einer Zeichenfolge nicht finden konnte. Scheint nicht möglich zu sein mit match, ist es? Dafür, re.search(pattern, my_string) funktioniert aber.

    – conradkleinespel

    11. November ’16 um 15:52


  • @conradk Ja, du hast recht, ich glaube da ist sowas wie impliziert ^ am Anfang, wenn Sie verwenden match. Ich denke, es ist etwas komplizierter als diese sehr einfache Erklärung, aber ich bin nicht klar. Sie haben jedoch Recht, dass es am Anfang der Zeichenfolge beginnt.

    – CrazyCasta

    11. November ’16 um 20:10 Uhr

  • Ich habe deine Antwort bearbeitet, weil es nur mit Sinn macht search() in diesem Zusammenhang.

    – Robo Robok

    21. Februar ’21 um 12:16

  • Ja, aber das will der Fragesteller. Ich bin mir nicht sicher, was du mit “nur sinnvoll mit” meinst search()“. Es funktioniert perfekt mit Streichholz.

    – CrazyCasta

    5. September ’21 um 21:03

Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
nehem

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 bewerten als bool wenn benötigt

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

  • Das ist seltsam. Warum können Sie verwenden? re.match im Rahmen einer if, aber du musst verwenden bool wenn du es woanders verwendest?

    – LondonRob

    13. März ’18 um 13:59

  • Vorsichtig mit re.match. Es stimmt nur am Anfang einer Zeichenfolge überein. Schaut mal rein re.search stattdessen.

    – LondonRob

    13. März ’18 um 14:02

  • @LondonRob wahrscheinlich weil if prüft, ob die Übereinstimmung nicht vorhanden ist None.

    – Dennis

    18. März ’19 um 13:17

  • Es besteht ein großer Bedarf an Kompilierung, um sicherzustellen, dass die regulären Ausdrücke keine Fehler wie Fehler mit ungültigem Zeichenbereich enthalten

    – Suh Fangmbeng

    6. Mai ’20 um 17:10


  • @SuhFangmbeng Compilation ist nützlich, wenn dasselbe re wird an mehr als einer Stelle verwendet, um die Effizienz zu verbessern. In Bezug auf Fehler .match würde den gleichen Fehler was werfen .compile tut. Es ist absolut sicher zu verwenden.

    – nehem

    6. Mai ’20 um 21:58 Uhr

1641663387 804 Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
sumeet agrawal

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

  • Dies ist der einzige Fall, der die Übereinstimmung zurückgibt, die zum Abrufen von Gruppen erforderlich ist. Beste Antwort meiner Meinung nach.

    – Rick Smith

    12. Dezember ’16 um 20:59

1641663387 175 Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
Marc Cohen

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'

Reguläre Ausdrücke machen es einfach …

[A-Z] entspricht genau einem Zeichen zwischen A und Z

d+ stimmt mit einer oder mehreren Ziffern überein

() Dinge gruppieren (und auch Dinge zurückgeben … aber jetzt nur daran denken, sie zu gruppieren)

+ wählt 1 oder mehr aus

1641663387 151 Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
Knien-vor-ZOD

  
import re

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

Ich glaube, das sollte für einen funktionieren Großbuchstaben, Zahl Muster.

1641663388 369 Uberprufen Sie ob die Zeichenfolge mit dem Muster ubereinstimmt
kryptisch

Wie in den Kommentaren angegeben, verwenden alle diese Antworten re.match stimmt implizit am Anfang der Zeichenfolge überein. re.search wird benötigt, wenn Sie auf die gesamte Zeichenfolge verallgemeinern möchten.

import re

pattern = re.compile("([A-Z][0-9]+)+")

# finds match anywhere in string
bool(re.search(pattern, 'aA1A1'))  # True

# matches on start of string, even though pattern does not have ^ constraint
bool(re.match(pattern, 'aA1A1'))  # False

Credit: @LondonRob und @conradkleinespel in den Kommentaren.

.

185350cookie-checkÜberprüfen Sie, ob die Zeichenfolge mit dem Muster übereinstimmt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy