Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie einen überlappenden Abgleich mit regulären Python-Ausdrücken

So implementieren Sie einen überlappenden Abgleich mit regulären Python-Ausdrücken

WBOY
WBOYnach vorne
2022-07-25 17:20:443181Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Python. Er stellt vor allem vor, wie Python-reguläre Ausdrücke einen guten Referenzwert haben.

So implementieren Sie einen überlappenden Abgleich mit regulären Python-Ausdrücken

【Verwandte Empfehlung: Python3-Video-Tutorial

Regulärer Ausdruck zur Implementierung überlappender Übereinstimmungen

import regex
string = '100101010001'
str_re = '101'
print(regex.findall(str_re, string, overlapped=True))

Gewöhnlicher Re-Bibliotheksabgleich kann nur mit einer „101“ übereinstimmen.

Reguläre Ausdrücke und reguläres Matching

Reguläre Ausdrücke

Reguläre Ausdrücke können als Ausdrücke zum Filtern von Daten verstanden werden, die aus einer begrenzten Anzahl von Atomen und Metazeichen bestehen.

Atome: Grundeinheit, jeder Ausdruck hat mindestens ein Atom Ausgabestation)

n Zahl S: Das Gegenteil von s
#普通字符组成原子
pat1 = "abcd"
 
#非打印字符组成原子
pat2 = "\n"
 
#通用字符做原子
pat3 = "\w"
 
#原子表组成原子
pat4 = "py[abc]"
#可以匹配pya,pyb,pyc,但匹配pyab等原子表重复出现的情况失败
 
#原子表开头带 ^ 表示取反
pat5 = "py[^abc]"
#第三个位置匹配除了a,b,c外的任意一个字符
^ entspricht der Startposition der Zeichenfolge * stimmt mit den vorherigen Atomen 0, 1, n-mal überein [Gierig Modus: Übereinstimmung so oft wie möglich]
D: Das Gegenteil von d s: Entspricht allen Leerzeichen wie Leerzeichen, Zeilenumbrüchen, Einzügen

Atomtabellen bilden Atome

Eine Gruppe von Atomen bildet eine Tabelle, deklariert von []

Die Prioritäten der Atome in der Tabelle sind gleich, aber der Inhalt erscheint nur in der Reihenfolge

Wenn die Atomtabelle mit ^ beginnt, bedeutet dies Negation

Metazeichen:

Haben besondere Bedeutungen in regulären Ausdrücken. Die Zeichen

.

entsprechen jedem Zeichen, außer dem Zeilenumbruchzeichen.

$

stimmt mit der Endposition der Zeichenfolge überein, wenn mehrere Übereinstimmungssätze vorhanden sind. Beim Abgleichen wird die letzte Gruppe von Übereinstimmungen in der Zeichenfolge zurückgegeben.

?

entspricht 0, 1 Mal dem vorherigen Atom [Lazy-Modus: genaue Übereinstimmung] + entspricht 1, n-mal dem vorherigen Atom { j }Das vorherige Atom erscheint j-mal { j , } Das vorhergehende Atom erscheint mindestens j-mal { j , k }Das vorhergehende Atom erscheint mindestens j-mal und bei die meisten k-mal i |. j stimmt mit i oder j überein, wenn i und j gleichzeitig erscheinen, stimmen Sie mit der i( )-Gruppe überein, beschränken Sie die Kombination dieser Datengruppe wie beschrieben in () und geben Sie nur den Inhalt zurück, der der Beschreibung in den Klammern entspricht Der Mustermodifikator Häufig verwendete Funktionen für den regulären Abgleich: (rufen Sie das reguläre Ausdrucksmodul re auf)re.search(pat, str[, flag]): Scannen Sie die Zeichenfolge str und geben Sie die Position zurück von pat (Der erste erfolgreiche Abgleich), Flag wird verwendet, um die Abgleichsmethode regulärer Ausdrücke zu steuern
import re
str = 'python'
pat = 'pytho[a-n]'
print(re.search(pat, str))
re.match(pat, str[, flag]): Scannen Sie den Anfang des string str Position, gibt die Position von pat (der ersten erfolgreichen Übereinstimmung) zurück, Flag wird verwendet, um die Übereinstimmungsmethode regulärer Ausdrücke zu steuern [Wenn es am Anfang nicht übereinstimmt, endet es und gibt keine zurück]
import re
str_1 = 'hello world'
str_2 = 'world hello'
pat = 'world'
print(re.match(pat, str_1))
print(re.match(pat, str_2))
re.complie(pat [, flag]): Kompilieren Sie den regulären Ausdruck pat und geben Sie das reguläre Ausdrucksobjekt zurück findall(str[, pos[, endpos]]): Alle übereinstimmen und Zeichenfolge als Liste zurückgeben. Für alle übereinstimmenden Teilzeichenfolgen [nicht nur beim ersten Mal] können pos und endpos die Startposition in der Zeichenfolge angebenre.complie(pat).findall(str): globale Matching-Funktion, alle Teilzeichenfolgen in str abgleichen, die mit pat übereinstimmen, eine Liste laden und das Ergebnis zurückgeben
import re
str = "hello world hello world hello world"
pat = "hello"
print(re.complie(pat).findall(str))
print(re.complie(pat).findall(str, 5, 15))
befindet sich in der Funktion. Der Parameter an der Flag-Position ändert seine Bedeutung, ohne den regulären Ausdruck zu ändern, und passt den an passendes Ergebnis. ? Basierend auf Unicon-Zeichenübereinstimmung, wirkt sich auf w aus reguläres Spiel. Beim regulären Abgleich handelt es sich um eine Technologie, die von Python-Crawlern verwendet wird, um Zielinformationen aus gecrawlten Textinformationen zu extrahieren.

re.sub(pat, repl, str[, count[, flag]]) Code>: Zeichen ersetzen Übereinstimmungen in der Zeichenfolge [Daten bereinigen], Sie können count verwenden, um die maximale Anzahl von Ersetzungen anzugeben<strong></strong><pre class="brush:py;">import re str = &quot;400-823-823&quot; pat = &quot;-&quot; #短横改空格,最大替换次数2 str_new = re.sub(pat, &quot; &quot;, str, count=2)</pre>

[Verwandte Empfehlungen:

Python3-Video-Tutorial

]

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen überlappenden Abgleich mit regulären Python-Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen