Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ersetzt man Übereinstimmungen ordnungsgemäß durch nummerierte Gruppen in Pythons re.sub?

Wie ersetzt man Übereinstimmungen ordnungsgemäß durch nummerierte Gruppen in Pythons re.sub?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 17:45:03864Durchsuche

How to Properly Replace Matches with Numbered Groups in Python's re.sub?

Python RE.Sub-Gruppe: Nummerierung nach Nummer

Bei der Verwendung regulärer Ausdrücke in Python kann die re.sub-Methode zum Ersetzen verwendet werden stimmt mit einer Ersatzzeichenfolge überein. Bei der Arbeit mit nummerierten Gruppen kann die Syntax jedoch schwierig sein.

Ein falsch interpretierter Versuch:

Zunächst könnten Sie Folgendes versuchen:

<code class="python">re.sub(r'(foo)', r'23', 'foobar')</code>

Erwartet, dass die Ausgabe „foo123bar“ lautet, gibt aber stattdessen „J3bar“ zurück und ersetzt „foo“ durch „J3“, aus Gründen, die möglicherweise nicht sofort klar sind.

Die richtige Syntax:

Um „foo“ genau durch „foo123“ zu ersetzen, verwenden Sie die folgende Syntax:

<code class="python">re.sub(r'(foo)', r'\g<1>123', 'foobar')</code>

Hier ist eine detaillierte Erklärung:

  • Der reguläre Ausdruck ( foo) erfasst die Teilzeichenfolge „foo“.
  • Die Ersatzzeichenfolge g<1>123 verweist auf die erfasste Teilzeichenfolge und hängt „123“ daran an.
  • g<1> ist eine nummerierte Gruppenreferenz, wobei „<1>“ stellt die erste erfasste Gruppe dar.

Dokumentationsauszug:

Laut Dokumentation ist die Syntax von g oder g wird verwendet für:

Zusätzlich zu Zeichen-Escapezeichen und Rückverweisen ... g verwendet die Teilzeichenfolge, die mit der Gruppe namens name übereinstimmt, wie in der (?P...)-Syntax definiert. g verwendet die entsprechende Gruppennummer.

Das obige ist der detaillierte Inhalt vonWie ersetzt man Übereinstimmungen ordnungsgemäß durch nummerierte Gruppen in Pythons re.sub?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn