Reguläre Ausdrücke in Python

WBOY
Freigeben: 2023-08-27 10:05:21
Original
1194 Leute haben es durchsucht

Reguläre Ausdrücke in Python

Haben Sie sich jemals gefragt, was der Schlüssel ist, um bestimmten Text in einem Dokument zu zu finden oder sicherzustellen, dass Text in ein bestimmtes Format passt (z. B. eine E-Mail-Adresse) und andere ähnliche Vorgänge durchzuführen?

Der Schlüssel zu dieser Art von Operation sind reguläre Ausdrücke (Regex). Schauen wir uns einige Definitionen regulärer Ausdrücke an. In Wikipedia ist ein regulärer Ausdruck wie folgt definiert:

Eine Zeichenfolge, die ein Suchmuster definiert und hauptsächlich für den Mustervergleich oder den String-Matching mit Strings verwendet wird, also für Operationen wie „Suchen und Ersetzen“. Das Konzept entstand in den 1950er Jahren, als der amerikanische Mathematiker Stephen Kleene die Beschreibung regulärer Sprachen formalisierte und allgemein mit den Unix-Textverarbeitungsdienstprogrammen ed (Editor) und grep (Filter) verwendet wurde.

Eine weitere gute Definition von

regular-expressions.info ist:

Reguläre Ausdrücke (kurz Regex oder Regexp) sind spezielle Textzeichenfolgen, die zur Beschreibung von Suchmustern verwendet werden. Sie können sich reguläre Ausdrücke als Platzhalter für Steroide vorstellen. Möglicherweise sind Sie mit der Platzhalternotation wie *.txt vertraut, um alle Textdateien in Ihrem Dateimanager zu finden. Das Regex-Äquivalent ist .*.txt$

Ich weiß, dass das Konzept der regulären Ausdrücke vielleicht noch etwas vage klingt. Schauen wir uns also einige Beispiele für reguläre Ausdrücke an, um dieses Konzept besser zu verstehen.

Beispiel für einen regulären Ausdruck

In diesem Abschnitt zeige ich Ihnen einige Beispiele für reguläre Ausdrücke, um Ihnen das Verständnis dieses Konzepts zu erleichtern.

Angenommen, Sie haben diesen regulären Ausdruck:

/abder/
Nach dem Login kopieren

Das sagt uns nur, dass wir nur Wörter zuordnen sollen

. abder

Wie wäre es mit diesem regulären Ausdruck?

/a[nr]t/
Nach dem Login kopieren

Sie können diesen regulären Ausdruck wie folgt lesen: Suchen Sie ein Textmuster, dessen erster Buchstabe

ist. a,最后一个字母是 t,这些字母之间是 n 或 r。所以匹配的词是 antart

Jetzt lass mich dir ein kleines Quiz geben. Wie schreibe ich einen regulären Ausdruck, der mit

endet? Ja, dieser reguläre Ausdruck kann wie folgt geschrieben werden: ca 开头,并以以下一个或全部字符 tbr

/ca[tbr]/
Nach dem Login kopieren

Wenn Sie eine Zeichenfolge sehen, die mit dem Zirkumflex-Symbol beginnt

. ^ 开头的正则表达式,则表示匹配以 ^ 之后提到的字符串开头的字符串。因此,如果您有下面的正则表达式,它会匹配以 This

/^This/
Nach dem Login kopieren

Also in der folgenden Zeichenfolge:

My name is Abder
This is Abder
This is Tom
Nach dem Login kopieren

Basierend auf dem regulären Ausdruck

, wird die folgende Zeichenfolge gefunden: /^This/

This is Abder
This is Tom
Nach dem Login kopieren

Was wäre, wenn wir Zeichenfolgen, die

enden, mit einer bestimmten Zeichenfolge abgleichen möchten? In diesem Fall verwenden wir das Dollarzeichen . Hier ein Beispiel: $

Abder$
Nach dem Login kopieren

In der obigen Zeichenfolge (drei Zeilen) wird dieser reguläre Ausdruck verwendet, um das folgende Muster abzugleichen:

My name is Abder
This is Abder
Nach dem Login kopieren

Was halten Sie von diesem regulären Ausdruck?

^[A-Z][a-z]
Nach dem Login kopieren

Ich weiß, dass es auf den ersten Blick vielleicht kompliziert aussieht, aber schauen wir es uns Stück für Stück an.

Wir haben gelernt, was ein Iambik ist.

bedeutet, dass, wenn eine Zeichenfolge gefunden wird, die mit einem Großbuchstaben beginnt, darauf ein Kleinbuchstabe des Alphabets folgt. ^ 。这意味着匹配以某个字符串开头的字符串。 [A-Z] 指的是大写字母。因此,如果我们阅读正则表达式的这一部分: ^[A-Z],它告诉我们匹配以大写字母开头的字符串。最后一部分 [a-z]

Welche der folgenden Zeichenfolgen wird also mit diesem regulären Ausdruck abgeglichen? Wenn Sie sich nicht sicher sind, können Sie Ihre Antwort mit Python testen (wie wir im nächsten Abschnitt sehen werden).

abder
Abder
ABDER
ABder
Nach dem Login kopieren

Reguläre Ausdrücke sind ein sehr breites Thema. Diese Beispiele sollen Ihnen nur eine Vorstellung davon geben, was sie sind und warum wir sie verwenden.

RexEgg ist eine großartige Referenz, um mehr über reguläre Ausdrücke zu erfahren und weitere Beispiele zu sehen.

Reguläre Ausdrücke in Python

Jetzt kommen wir zum spaßigen Teil. Wir würden gerne sehen, wie man einige der oben genannten regulären Ausdrücke in Python verwendet. Das Modul, das wir zur Verarbeitung regulärer Ausdrücke in Python verwenden werden, ist das

-Modul. re

Im ersten Beispiel geht es darum, das Wort zu finden

. In Python würden wir dies wie folgt tun: abder

import re
text = 'My name is Abder'
match_pattern = re.match(r'Abder', text)
print match_pattern
Nach dem Login kopieren

Wenn Sie das obige Python-Skript ausführen, erhalten Sie die Ausgabe:

!None

Das Skript funktioniert gut, aber das Problem ist die Art und Weise, wie die Funktion match() funktioniert. Wenn wir das

-Moduldokument zurückgeben, macht die Funktion match() Folgendes: match() 的工作方式。如果我们返回 re 模块文档,这就是函数 match()

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。如果字符串与模式不匹配,则返回 None;请注意,这与零长度匹配不同。

啊哈,从这里我们可以看出,match() 仅当在字符串的开头找到匹配项时才会返回结果。

我们可以使用函数 search(),这是基于文档的:

扫描字符串,查找正则表达式模式产生匹配的第一个位置,并返回相应的匹配对象。如果字符串中没有位置与模式匹配,则返回 None;请注意,这与在字符串中的某个点查找零长度匹配不同。

因此,如果我们编写上面的脚本,但使用 search() 而不是 match(),我们会得到以下输出:

<_sre.SRE_Match 0x101cfc988 处的对象>

即返回了一个匹配对象

如果我们想返回结果(字符串匹配),我们使用 group() 函数。如果我们想查看整个比赛,我们使用 group(0)。因此:

打印 match_pattern.group(0)

将返回输出:Abder

如果我们采用上一节中的第二个正则表达式,即 /a[nr]t/,则可以用 Python 编写如下:

import re
text = 'This is a black ant'
match_pattern = re.search(r'a[nr]t', text)
print match_pattern.group(0)
Nach dem Login kopieren

此脚本的输出是:ant

结论

文章越来越长,Python 中的正则表达式主题即使不是一本书,也肯定需要不止一篇文章。

然而,本文旨在让您快速入门并有信心进入 Python 正则表达式的世界。您可以参考 re 文档来了解有关此模块的更多信息以及如何深入了解该主题。

Das obige ist der detaillierte Inhalt vonReguläre Ausdrücke in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!