Heim >Backend-Entwicklung >Python-Tutorial >Welche Möglichkeiten gibt es, das re-Modul in regulären Python-Ausdrücken zu verwenden? Einführung in die Verwendung des re-Moduls

Welche Möglichkeiten gibt es, das re-Modul in regulären Python-Ausdrücken zu verwenden? Einführung in die Verwendung des re-Moduls

不言
不言Original
2018-09-15 14:15:443052Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Verwendung des Re-Moduls in regulären Python-Ausdrücken. Die Einführung in die Verwendung des re-Moduls hat einen gewissen Referenzwert. Freunde in Not können darauf zurückgreifen.

Reguläre Ausdrücke sind die am häufigsten verwendete Methode zur Verarbeitung von Zeichenfolgen und reguläre Ausdrücke sind überall in unserer Codierung zu sehen.

Die regulären Ausdrücke in Python unterscheiden sich geringfügig von denen in anderen Sprachen:

1. Beim Ersetzen einer Zeichenfolge kann die ersetzte Zeichenfolge eine Funktion sein

2 , die Aufteilung Die Funktion kann die Anzahl der Unterteilungen angeben, was zu Fallstricken führt

3 Der im vorherigen Punkt definierte Ausdruck muss eine feste Länge haben

Im Folgenden finden Sie eine detaillierte Beschreibung der Verwendung Beachten Sie, dass die drei oben genannten Unterschiede genau gleich sind.

1. Beschreibung:

re.match-Versuche um vom Anfang der Zeichenfolge abzugleichen. Wenn ein Muster an der Startposition nicht erfolgreich abgeglichen wird, gibt match() None zurück.

Syntax:

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

Flags sind optionale Flags, mehrere Flags können durch bitweise ODER (|) Angabe erhalten werden. Beispielsweise ist re.I |. re.M auf I- und M-Bezeichner festgelegt:

Modifikator

Beschreibung

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 w, W, b, B.

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re.I Groß- und Kleinschreibung ignorieren
re.L Do Lokalisierung Identifizieren (gebietsschemabezogene) Übereinstimmungen
re.M Mehrere Zeilen Matching, Influence ^ und $
re.S make. Übereinstimmung beinhaltet Zeilenumbrüche Alle Zeichen einschließlich
re.U Geparst nach Unicode Zeichensatzzeichen. Dieses Flag betrifft w, W, b, B.
re. >Dieses Flag erleichtert das Verständnis Ihrer regulären Ausdrücke, indem es Ihnen ein flexibleres Format bietet.

Wenn der Abgleich erfolgreich ist, gibt die Methode re.match ein passendes Objekt zurück. Sie können die passende Objektfunktion group(num) oder groups() verwenden, um den passenden Ausdruck zu erhalten. group() oder group(0) gibt das übereinstimmende Ergebnis des gesamten regulären Ausdrucks zurück.

Beispiel:

s= 'abc123abc'
print(re.match(&#39;[a-z]+&#39;, s))           # <_sre.SRE_Match object; span=(0, 3), match=&#39;abc&#39;>
print(re.match(&#39;[a-z]+&#39;, s).group(0))      # abc
print(re.match(&#39;[\d]+&#39;, s))            # None
print(re.match(&#39;[A-Z]+&#39;, s, re.I).group(0))   # abc
print(re.match(&#39;[a-z]+&#39;, s).span())       # (0, 3)

2. Suche

Anleitung:

re.search scannt das Ganze Zeichen Die Verkettung gibt den ersten erfolgreichen Treffer zurück.

Syntax:

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

Die re.search-Methode gibt ein passendes Objekt zurück, wenn die Übereinstimmung erfolgreich ist, andernfalls wird zurückgegeben Keiner. Übereinstimmungsausdrücke können mit den Übereinstimmungsobjektfunktionen „group(num)“ oder „groups()“ abgerufen werden.

Beispiel:

s = &#39;abc123abc&#39;
print(re.search(&#39;[a-z]+&#39;, s).group())  # abc
print(re.search(&#39;[a-z]+&#39;, s).span())   # (0, 3)
print(re.search(&#39;[\d]+&#39;, s).group())   # 123
print(re.search(&#39;[\d]+&#39;, s).span())    # (3, 6)
print(re.search(&#39;xyz&#39;, s))         # None

groupdict

groupdict gibt ein Wörterbuch aller übereinstimmenden benannten Untergruppen zurück.

print(re.search(&#39;[a-z]+&#39;, s).groupdict())          # {}
print(re.search(&#39;(?P<letter>[a-z]+)(?P<num>\d+)&#39;, s).groupdict())  # {&#39;num&#39;: &#39;123&#39;, &#39;letter&#39;: &#39;abc&#39;}

3, sub und subn

Erklärung:

re.sub wird verwendet, um Übereinstimmungen in der Zeichenfolge zu ersetzen.

re.subn gibt ein Tupel zurück, das die ersetzte Zeichenfolge und die Anzahl der Ersetzungen enthält.

Syntax:

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

repl: Die zu ersetzende Zeichenfolge, oder es kann eine Funktion sein .

Anzahl: Die maximale Anzahl von Ersetzungen nach dem Mustervergleich. Der Standardwert ist 0, was bedeutet, dass alle Übereinstimmungen ersetzt werden.

Beispiel:

s = &#39;abc123abc&#39;
print(re.sub(&#39;[\d]+&#39;, &#39;数字&#39;, s))       # abc数字abc
print(re.sub(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))   # 字母123abc
# 将匹配的数字乘以 2
def double(matched):
    value = int(matched.group(&#39;value&#39;))
    return str(value * 2)
# repl是一个函数
print(re.sub(&#39;(?P<value>\d+)&#39;, double, s))  # abc246abc
print(re.subn(&#39;[\d]+&#39;, &#39;数字&#39;, s))        # (&#39;abc数字abc&#39;, 1)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s,))      # (&#39;字母123字母&#39;, 2)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))     # (&#39;字母123字母&#39;, 1)

4. kompilieren

Erklärung:

re.compile wird verwendet für Kompilierung Regulärer Ausdruck, generiert ein reguläres Ausdrucksobjekt (Muster) zur Verwendung durch die beiden Funktionen match() und search().

Syntax:

compile(pattern, flags=0)

Beispiel:

s = &#39;abc123abc&#39;
p = re.compile(&#39;[\d]+&#39;)
print(p.match(s, 4, 5).group(0))    # 2 从位置4开始匹配到位置5
print(p.search(s).group(0))         # 123

findall

Beschreibung:

re.findall findet alle Teilzeichenfolgen, die mit dem regulären Ausdruck in der Zeichenfolge übereinstimmen, und gibt eine Liste zurück. Wenn keine Übereinstimmung gefunden wird, wird eine leere Liste zurückgegeben.

Syntax:

findall(pattern, string, flags=0)

Beispiel:

s = &#39;abc123abc&#39;
print(re.findall(&#39;[a-z]+&#39;, s))  # [&#39;abc&#39;, &#39;abc&#39;]
print(re.findall(&#39;[h-n]+&#39;, s))  # []

6. finditer

Beschreibung:

finditer ähnelt findall, es sucht nach allen Teilzeichenfolgen, die mit dem regulären Ausdruck in der Zeichenfolge übereinstimmen, und gibt sie als Iterator zurück.

Syntax:

finditer(pattern, string, flags=0)

Beispiel:

s = &#39;abc123def&#39;
it = re.finditer(&#39;[a-z]+&#39;, s)
for match in it:    print(match.group())

7. split

Beschreibung: Die Methode

re.split teilt die Zeichenfolge entsprechend übereinstimmender Teilzeichenfolgen auf und gibt eine Liste zurück.

Syntax:

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

maxsplit: Anzahl der Teilungen, maxsplit=1 einmal geteilt, Standard ist 0, nein Begrenzen Sie die Anzahl der Male.

Beispiel:

print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, re.I))           # [&#39;1A1&#39;, &#39;2A3&#39;]# 输出结果并未能区分大小写,这是因为re.split(pattern,string,maxsplit, flags)默认是四个参数,当我们传入的三个参数的时候,系统会默认re.I是第三个参数,所以就没起作用。# 如果想让这里的re.I起作用,写成flags=re.I即可。
print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, flags=re.I))     # [&#39;1&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;]

8, escape

Erklärung:

re.escape für string The Spezielle Zeichenfolgen im Inneren werden maskiert.

Grammatik:

escape(pattern)

Beispiel:

print(re.escape(&#39;www.dxy.cn&#39;))  # www\.dxy\.cn

9 Regulärer Ausdruck

"(?P8a11bc632ea32a57b3e3693c7987c420…)": Gruppieren und benennen Sie es 8a11bc632ea32a57b3e3693c7987c420.

„(?P=name)“: bezieht sich auf die Zeichenfolge, die mit der Gruppe übereinstimmt, deren Alias ​​8a11bc632ea32a57b3e3693c7987c420 ist.

10. Spezielle Antezedens-Definition (negativ)

Die Antezedens-Definition (?<=exp) und die Antezedens-Negativdefinition (?) werden üblicherweise in regulären Ausdrücken verwendet .

(?<=aaa)   # 正确
(?<=aaa|bbb) # 正确
(?<=aaa|bb) # 错误
(?<=\d+)   # 错误
(?<=\d{3})  # 正确

Verwandte Empfehlungen:

Wozu dient das Protokollierungsmodul in Python? Einführung in die Verwendung des Protokollierungsmoduls

Detaillierte Einführung in den regulären Ausdruck des Python-Moduls

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, das re-Modul in regulären Python-Ausdrücken zu verwenden? Einführung in die Verwendung des re-Moduls. 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