Heim  >  Artikel  >  Backend-Entwicklung  >  Eine ausführliche Einführung zum Erlernen des re-Moduls der Python-Standardbibliothek

Eine ausführliche Einführung zum Erlernen des re-Moduls der Python-Standardbibliothek

高洛峰
高洛峰Original
2017-03-21 09:15:061984Durchsuche

Das re-Modul bietet eine Reihe leistungsstarker regulärer Ausdruck (regulärer Ausdruck)-Tools, mit denen Sie schnell überprüfen können, ob eine bestimmte Zeichenfolge mit einem bestimmten Muster übereinstimmt ( matchFunktion). ) oder fügen Sie dieses Muster ein (Suchfunktion). Reguläre Ausdrücke sind Zeichenfolgenmuster, die in einer kompakten (und mysteriösen) Syntax geschrieben sind.

1. Gängige Methoden

verwendet werden können verwendet
Gemeinsame Methoden Beschreibung
Übereinstimmung (Muster, Zeichenfolge, Flags=0) Wenn der Anfang der Zeichenfolge mit dem regulären Ausdrucksmuster übereinstimmt, wird die entsprechende Instanz von MatchObject zurückgegeben, andernfalls wird zurückgegeben Keine
search(pattern, string, flags=0) Scannen Sie die Zeichenfolge. Wenn eine Position vorhanden ist, die mit dem regulären Ausdrucksmuster übereinstimmt, wird eine Instanz von MatchObject zurückgegeben. andernfalls ReturnNone
sub(pattern, repl, string, count=0, flags=0) stimmt mit dem Teil des Musters im String überein , Durch repl ersetzen, bis zur Anzahl der Male
subn(pattern, repl, string, count=0, flags=0) ähnelt sub, zurückgegeben von subn Ist eine ersetzte Zeichenfolge und ein Array übereinstimmender Zeiten in ein Tupel
split(pattern, string, maxsplit=0, flags=0) Verwenden Sie die mit dem Muster übereinstimmende Zeichenfolge, um die Zeichenfolge aufzuteilen
findall(pattern, string, flags=0) Gibt das String-Matching-Muster in string in Form einer Liste zurück
compile( pattern , flags=0)compile(pattern, flags=0) Kompiliert ein reguläres Ausdrucksmuster in ein reguläres -Objekt , sodass die Übereinstimmungs- und Suchmethoden des regulären Objekts
purge() Löschenden regulären Ausdruck Cache
escape( string ) Fügen Sie allen Zeichen in der Zeichenfolge außer Buchstaben und Zahlen einen Backslash hinzu

2. Spezielle passende Zeichen

Syntax Beschreibung
. entspricht jedem Zeichen außer Zeilenumbrüchen
^ Header entspricht
$ Ende-Übereinstimmung
* stimmt 0 oder öfter mit dem vorherigen Zeichen überein
+ übereinstimmt das vorherige Zeichen ein- oder mehrmals Entspricht m- bis n-mal dem vorherigen Zeichen
Escape jedes Sonderzeichen
[] wird verwendet, um einen Zeichensatz in Kombination mit
| darzustellen, oder: Es bedeutet passend zu jedem
links und rechts

3. Modulmethode

re.match(pattern, string, flags=0)

  Findet eine Übereinstimmung vom Anfang der Zeichenfolge und gibt eine Match-Objektinstanz zurück, wenn das Muster übereinstimmt (Match Objekt, das später beschrieben wird), andernfalls wird None zurückgegeben. Flags ist der Abgleichsmodus (unten beschrieben), der zur Steuerung der Abgleichsmethode regulärer Ausdrücke verwendet wird.

import re

a = &#39;abcdefg&#39;print re.match(r&#39;abc&#39;, a)  # 匹配成功print re.match(r&#39;abc&#39;, a).group()print re.match(r&#39;cde&#39;, a)  # 匹配失败>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>abc
>>>None

search(pattern, string, flags=0)

Wird verwendet, um Teilzeichenfolgen in der Zeichenfolge zu finden, die erfolgreich abgeglichen werden können. Wenn sie gefunden werden, wird eine Match-Objektinstanz zurückgegeben, andernfalls wird None zurückgegeben .

import re

a = &#39;abcdefg&#39;print re.search(r&#39;bc&#39;, a)print re.search(r&#39;bc&#39;, a).group()print re.search(r&#39;123&#39;, a)

>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>bc
>>>None

sub(pattern, repl, string, count=0, flags=0)

Ersetzen, ersetzen Sie den Teil der Zeichenfolge, der mit dem Muster übereinstimmt, durch repl, bis zu Anzahl Mal (The verbleibende Übereinstimmungen werden nicht verarbeitet) und dann wird die ersetzte Zeichenfolge zurückgegeben.

import re

a = &#39;a1b2c3&#39;print re.sub(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;print re.sub(r&#39;\s+&#39;, &#39;0&#39;, a)  # 将空白字符替换成&#39;0&#39;>>>a0b0c0
>>>a1b2c3

subn(pattern, repl, string, count=0, flags=0)

Es ist dasselbe wie die Funktion sub(), außer dass es ein Tupel zurückgibt, das new enthält Zeichen Zeichenfolge und die Anzahl der Übereinstimmungen

import re

a = &#39;a1b2c3&#39;print re.subn(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;>>>(&#39;a0b0c0&#39;, 3)

split(pattern, string, maxsplit=0, flags=0)

Reguläre Version von split(), aufgeteilt nach Teilzeichenfolgen, die mit der Musterzeichenfolge übereinstimmen, Wenn im Muster Klammern verwendet werden, wird die mit dem Muster übereinstimmende Zeichenfolge auch als Teil der Rückgabewertliste verwendet, und maxsplit ist die Zeichenfolge, die maximal geteilt werden kann.

import re

a = &#39;a1b1c&#39;print re.split(r&#39;\d&#39;, a)print re.split(r&#39;(\d)&#39;, a)

>>>[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
>>>[&#39;a&#39;, &#39;1&#39;, &#39;b&#39;, &#39;1&#39;, &#39;c&#39;]

findall(pattern, string, flags=0)

Gibt nicht überlappende Teilzeichenfolgen zurück, die mit dem Muster in der Zeichenfolge übereinstimmen, in Form einer Liste.

import re

a = &#39;a1b2c3d4&#39;print re.findall(&#39;\d&#39;, a)

>>>[&#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;]

4. Match-Objekt

Wenn re.match() und re.search() erfolgreich übereinstimmen, geben sie ein Match-Objekt zurück, das viele Informationen über die Übereinstimmung enthält . Sie können die von Match bereitgestellten Eigenschaften oder Methoden verwenden, um diese Informationen abzurufen. Zum Beispiel:

>>>import re

>>>str = &#39;he has 2 books and 1 pen&#39;
>>>ob = re.search(&#39;(\d+)&#39;, str)

>>>print ob.string  # 匹配时使用的文本
he has 2 books and 1 pen

>>>print ob.re # 匹配时使用的Pattern对象
re.compile(r&#39;(\d+)&#39;)

>>>print ob.group()  # 获得一个或多个分组截获的字符串
2

>>>print ob.groups()  # 以元组形式返回全部分组截获的字符串
(&#39;2&#39;,)

5. Musterobjekt

Das Musterobjektobjekt wird von re.compile() zurückgegeben. Es verfügt über viele Methoden mit demselben Namen wie das re-Modul Methoden haben ähnliche Funktionen. Zum Beispiel:

>>>import re
>>>pa = re.compile(&#39;(d\+)&#39;)

>>>print pa.split(&#39;he has 2 books and 1 pen&#39;)
[&#39;he has &#39;, &#39;2&#39;, &#39; books and &#39;, &#39;1&#39;, &#39; pen&#39;]

>>>print pa.findall(&#39;he has 2 books and 1 pen&#39;)
[&#39;2&#39;, &#39;1&#39;]

>>>print pa.sub(&#39;much&#39;, &#39;he has 2 books and 1 pen&#39;)
he has much books and much pen

6. Übereinstimmungsmuster

Der Wert des Übereinstimmungsmusters kann den bitweisen ODER-Operator '|' verwenden, um anzugeben, dass er gleichzeitig wirksam wird B. re.I |. re.M, im Folgenden sind einige häufige Flags aufgeführt.

  • re.I(re.IGNORECASE): Groß-/Kleinschreibung ignorieren

>>>pa = re.compile(&#39;abc&#39;, re.I)
>>>pa.findall(&#39;AbCdEfG&#39;)
>>>[&#39;AbC&#39;]
  • re.L(re . LOCALE): Zeichensatzlokalisierung

Diese Funktion dient zur Unterstützung mehrsprachiger Zeichensatzverwendungsumgebungen, wie z. B. des Escape-Zeichens w, in einem englischen Kontext , es steht für [a-zA-Z0-9], was alle englischen Zeichen und Zahlen bedeutet. Bei Verwendung in einer französischen Umgebung stimmen einige französische Zeichenfolgen nicht überein. Fügen Sie diese L-Option hinzu und Sie können eine Übereinstimmung erzielen. Dies scheint jedoch für die chinesische Umgebung wenig nützlich zu sein und chinesische Schriftzeichen können immer noch nicht erkannt werden.

  • re.M(re.MULTILINE): Mehrzeilenmodus, ändern Sie das Verhalten von '^' und '$'

>>>pa = re.compile(&#39;^\d+&#39;)
>>>pa.findall(&#39;123 456\n789 012\n345 678&#39;)
>>>[&#39;123&#39;]

>>>pa_m = re.compile(&#39;^\d+&#39;, re.M)
>>>pa_m.findall(&#39;123 456\n789 012\n345 678&#39;)
>>>[&#39;123&#39;, &#39;789&#39;, &#39;345&#39;]
  • re.S(re.DOTALL): Klicken Sie auf ein beliebiges passendes Muster, um das Verhalten von „.“ zu ändern

  .号将匹配所有的字符。缺省情况下.匹配除换行符\n外的所有字符,使用这一选项以后,点号就能匹配包括换行符的任何字符。

  • re.U(re.UNICODE): 根据Unicode字符集解析字符

  • re.X(re.VERBOSE): 详细模式

# 这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的a = re.compile(r"""\d +  # the integral part
                   \.    # the decimal point
                   \d *  # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")# 但是在这个模式下,如果你想匹配一个空格,你必须用&#39;/ &#39;的形式(&#39;/&#39;后面跟一个空格)


Das obige ist der detaillierte Inhalt vonEine ausführliche Einführung zum Erlernen des re-Moduls der Python-Standardbibliothek. 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