Grundlegende Regelmäßigkeit von Python

Regelmäßigkeit ist die Abkürzung für regulären Ausdruck (Regular Expression), auch als regulärer Ausdruck bekannt, im Code oft als Regex, Regexp oder RE abgekürzt, ein Konzept der Informatik. Reguläre Ausdrücke werden normalerweise verwendet, um Text abzurufen und zu ersetzen, der einem bestimmten Muster (Regel) entspricht. Viele komplexe Abfrage- und Filteralgorithmen basieren tatsächlich auf regulären Ausdrücken, aber es erfordert einen gewissen Aufwand, komplexe reguläre Ausdrücke abzugleichen. Es gibt kein Sprichwort: „Sobald Sie die regulären Ausdrücke eingegeben haben, ist es so tief wie das Meer.“ Man schmeckt, man schmeckt sorgfältig.
Verwendungsmöglichkeiten:
1. Wird für die Textsuche und -ersetzung verwendet.
2. Spezifizierte Daten abfragen
. 3. Segmentieren Sie kompliziertere Zeichenfolgen (Crawler).
Wenn Sie die Regelmäßigkeit verwenden, müssen Sie die reguläre Bibliothek wie folgt importieren:

import re

1. Re häufig verwendete Verarbeitungsfunktionen

1,1 Übereinstimmung

re.match Versucht, ein Muster vom Anfang der Zeichenfolge abzugleichen. Wenn die Übereinstimmung nicht am Anfang liegt, gibt match() keine zurück.

def match(pattern, string, flags=0):
    """Try to apply the pattern at the start of the string, returning
    a Match object, or None if no match was found."""
    return _compile(pattern, flags).match(string)

match hat 3 Parameter, die Funktionen sind wie folgt:

Parameter Wirkung
Muster Übereinstimmung mit regulärem Ausdruck
Zeichenfolge passende Zeichenfolge
Flaggen Flag-Bit, das zur Steuerung der Vergleichsmethode regulärer Ausdrücke verwendet wird, z. B. ob Groß-/Kleinschreibung beachtet werden soll, mehrzeiliger Vergleich usw.

wie:

import re
print(re.match('aa', 'aawewrwr'))

Die Ausgabe ist:

<re.Match object; span=(0, 2), match='aa'>

Zeigt an, dass die Zeichenfolge „aa“ zwischen [0-2) übereinstimmt.

1.2 Suche

Die Suche unterscheidet sich von der Übereinstimmung. Die Suche durchsucht die gesamte Zeichenfolge und gibt die erste Zeichenfolge zurück, die übereinstimmt. Wenn es keine Übereinstimmung gibt, wird „Keine“ zurückgegeben.

def search(pattern, string, flags=0):
    """Scan through string looking for a match to the pattern, returning
    a Match object, or None if no match was found."""
    return _compile(pattern, flags).search(string)

Die Suche hat auch 3 Parameter, die mit der Übereinstimmung übereinstimmen.

Parameter Wirkung
Muster Übereinstimmung mit regulärem Ausdruck
Zeichenfolge passende Zeichenfolge
Flaggen Flag-Bit, das zur Steuerung der Vergleichsmethode regulärer Ausdrücke verwendet wird, z. B. ob Groß-/Kleinschreibung beachtet werden soll, mehrzeiliger Vergleich usw.

wie:

import re
print(re.search('com', 'www.baidu.com').span())

Ausgang

(10, 13)

Zeigt an, dass die Zeichenfolge „com“ zwischen 10 und 13 zum ersten Mal gefunden wurde

1.3 kompilieren

Die Kompilierungsfunktion wird verwendet, um den regulären Ausdruck zu kompilieren und ein reguläres Ausdrucksobjekt (Muster) zur Verwendung durch die beiden Funktionen match() und search() zu generieren.

def compile(pattern, flags=0):
    "Compile a regular expression pattern, returning a Pattern object."
    return _compile(pattern, flags)

Muster bezieht sich auf einen regulären Ausdruck.
wie:

import re
pattern = re.compile(r'\d+')
m = pattern.match('ondfh123edsre32')
print(m)

Ausgang:

None

r'\d+ ': Gibt an, dass eine oder mehrere Ziffern abgeglichen werden sollen, und die Ausgabe ist „Keine“, da die Übereinstimmung mit dem Header übereinstimmt.

1.4 findall

Sucht alle Teilzeichenfolgen in einer Zeichenfolge, die mit dem regulären Ausdruck übereinstimmen, und gibt eine Liste oder eine leere Liste zurück, wenn keine Übereinstimmungen gefunden werden.

def findall(pattern, string, flags=0):
    """Return a list of all non-overlapping matches in the string.

    If one or more capturing groups are present in the pattern, return
    a list of groups; this will be a list of tuples if the pattern
    has more than one group.

    Empty matches are included in the result."""
    return _compile(pattern, flags).findall(string)

wie:

import re
pattern = re.compile(r'\d+')
print(pattern.findall('123rerfgrer456'))

Ausgang:

['123', '456']

1,5 geteilt

re.finditer ähnelt findall, findet alle Teilzeichenfolgen, die mit dem regulären Ausdruck in der Zeichenfolge übereinstimmen, und gibt sie als Iterator zurück.
wie:

import re
it = re.finditer(r"\d+","12a32bc43jf3") 
for match in it: 
    print (match.group() )

Ausgang:

12
32
43
3

1,6 geteilt

re.split kann die übereinstimmende Zeichenfolge aufteilen und eine Teilungsliste zurückgeben. Wenn keine Übereinstimmung erzielt werden kann, wird die gesamte Zeichenfolge zurückgegeben.
wie:

import re
print(re.split(r'\w', 'adc,abc,abc'))

Ausgang:

['abc', 'abc', 'abc']

Zweitens: reguläre Ausdrücke

Ausdruck Bedeutung
^ entspricht dem Anfang der Zeichenfolge
$ entspricht dem Ende der Zeichenfolge
. entspricht jedem Zeichen außer Newline
[…] Atomtabelle, die Ausdrücke und Zeichensätze speichert. stimmt mit einem der darin enthaltenen Zeichen überein
[^…] Übereinstimmung mit Zeichen, die nicht in [] enthalten sind
* Entspricht 0 oder mehr der vorhergehenden Ausdrücke
+ Entspricht einem oder mehreren der vorhergehenden Ausdrücke
Passen Sie den vorherigen 0- oder 1-Ausdruck an, nicht gierige Übereinstimmung
{M} Passen Sie den vorherigen Ausdruck m-mal an, kann nicht alleine verwendet werden
{m, n} Passen Sie das m- bis n-fache des vorherigen Ausdrucks an, gieriges Matching
a|b Übereinstimmung mit a oder b
[az] entspricht jedem Kleinbuchstaben
[\u4e00-\u9fa5] mit chinesischen Schriftzeichen übereinstimmen
[A B C D] entspricht jedem Groß- und Kleinbuchstaben
[a-zA-Z] entspricht jedem Groß- und Kleinbuchstaben
\D Äquivalent zu [0-9], entspricht einer beliebigen Zahl
\D passt zu allen Nicht-Ziffern
\w Entspricht einem beliebigen alphanumerischen Zeichen und Unterstrich, entsprechend [a-zA-Z0-9_]
\W Passen Sie nicht numerische Buchstaben und Unterstriche an
\S entspricht jedem Leerzeichen
\S Entspricht jedem Nicht-Null-Zeichen
\A Match-String beginnt
\Z Passen Sie das Ende der Zeichenfolge an. Wenn eine neue Zeile vorhanden ist, stimmen Sie nur mit der Endzeichenfolge vor der neuen Zeile überein
\z Übereinstimmung mit dem Ende der Zeichenfolge

Beispiel:

import re
# 匹配一个字母
print(re.compile('[a]').match('aabaa'))
# 匹配任意一个字母a、b、c
print(re.compile('[abc]').match('abcbaa'))
# 匹配任意一个小写字母
print(re.compile('[a-z]').search('ASDAFasadSAD'))
# 匹配汉字
print(re.compile('[\u4e00-\u9fa5]').search('ASDA帅哥SAD'))
# 匹配任意一个字母
print(re.compile('[a-zA-Z]').search('ASDA帅哥SAD'))
# 匹配手机号
print(re.compile('^1[3-8][0-9]{9}$').search('13884559256'))
# 匹配前边任意次
print(re.compile('a*').search('aaaaasdasdsada'))

Ausgang:

<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(5, 6), match='a'>
<re.Match object; span=(4, 5), match='帅'>
<re.Match object; span=(0, 1), match='A'>
<re.Match object; span=(0, 11), match='13884559256'>
<re.Match object; span=(0, 5), match='aaaaa'>

3. Eine einfache Übung, um mithilfe von re zu beurteilen, ob ein QQ-Konto legal ist

import re

def isValidQQ(qq):
    pattern = re.compile("[1-9][0-9]{4,10}$")
    r = pattern.match(qq)
    if r:
       return True
    else:
       return False

def isCheckQQ(qq):
    if qq.isdigit() == False:
        return "{}号码不全为数字".format(qq)
    if len(qq) < 5:
        return "{}号码长度不够".format(qq)
    if isValidQQ(qq) == True:
        return "{}号码合法".format(qq)
    else:
        return "{}号码不合法".format(qq)

if __name__ == "__main__":
    while True:
        qq = input("请输入qq号:\n")
        if qq == "q":
            break
        print(isCheckQQ(qq))

Viertens. Zusammenfassung

Reguläre Ausdrücke können verschiedene reguläre Ausdrücke über ihre grundlegenden regulären Elemente kombinieren, um erforderliche Zeichenfolgen abzugleichen. Es wird häufig verwendet, um die erforderlichen Informationen auf der Crawler-Seite, einem einfachen Mensch-Maschine-Dialogsystem usw. abzugleichen. Es weist eine hohe Effizienz auf und die kompetente Verwendung regulärer Ausdrücke kann die Arbeitseffizienz verbessern. Es ist eines der notwendigen Werkzeuge für fortgeschrittene Crawler.

Ich denke du magst

Origin blog.csdn.net/JaysonWong/article/details/105514218
Empfohlen
Rangfolge