Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung des Lernens regulärer Python-Ausdrücke

Zusammenfassung des Lernens regulärer Python-Ausdrücke

高洛峰
高洛峰Original
2017-01-12 16:28:101103Durchsuche

Die Möglichkeit, Regelmäßigkeit in Python zu implementieren, ist das Modul re (Abkürzung für regulärer Ausdruck). Sie können verschiedene Methoden des Moduls re aufrufen, um verschiedene Funktionen zu erreichen. Lassen Sie uns darüber sprechen, wie reguläre Ausdrücke in Python implementiert werden können vom re-Modul aufgerufen werden und welche Funktionen diese Methoden haben; es gibt auch Beispiele für reguläre Ausdrücke und die Bedeutung verschiedener Sonderzeichen:

1. re.sub und replace:

Die vollständige Schreibweise von „sub“ bedeutet „ersetzen“; da wir nun wissen, dass es „ersetzen“ bedeutet, ist es einfach, es in Beispielen zu verwenden. Tatsächlich bedeutet „ersetzen“ auch „ersetzen“, aber ihre Verwendung ist nicht dasselbe. Lassen Sie uns anhand eines Beispiels ihre Ähnlichkeiten und Unterschiede im Detail erläutern:

>>> import re
>>> str1 = 'Hello 111 is 222'
>>> str2 = str1.replace('111','222')
>>> print(str2)
Hello 222 is 222
>>>

Wenn es sich um die folgende Situation handelt, ersetzen Sie alle Zahlen durch 222, dann verwenden Sie Ersetzen Die Implementierung ist schwieriger, aber mit der Untermethode des Re-Moduls relativ einfach zu implementieren: (Wenn es sich um eine komplexere Operation handelt, ist die Verwendung von Ersetzen möglicherweise nicht möglich.)

>>> import re
>>> str1 = 'Hello 123 is 456'
>>> str2 = re.sub('\d+','222',str1)
>>> print(str2)
Hello 222 is 222
>>>

2. re. search() und re.match():

match: Nur den regulären Ausdruck vom Anfang der Zeichenfolge abgleichen. Wenn der Match erfolgreich ist, wird matchobject zurückgegeben. andernfalls keine.

Suche: Versuchen Sie, alle Zeichenfolgen in der Zeichenfolge mit dem regulären Ausdruck abzugleichen. Wenn nicht alle Zeichenfolgen erfolgreich abgeglichen werden, geben Sie keine zurück, andernfalls geben Sie matchobject zurück.

Das folgende Beispiel veranschaulicht Übereinstimmung und Die Ähnlichkeiten und Unterschiede der Suche zeigen auch, dass die Suche in tatsächlichen Anwendungen immer noch häufiger verwendet wird:

import re
str = 'helloword,i am alex'
if not re.match('word',str):
print('cannot match')
print(re.match('hello',str1).group())
print(re.search('word',str1).group())
#显示结果
cannot match
hello
word


3. bzgl .split:

Wenn Sie in Python eine Zeichenfolge teilen möchten, müssen Sie nur die Split-Methode von str aufrufen. Diese Aufteilung kann jedoch nur basierend auf einem bestimmten Zeichen erfolgen Ich möchte es gleichzeitig angeben. Wenn mehrere Zeichen zur Segmentierung verwendet werden, kann dies nicht erreicht werden.

Glücklicherweise bietet das re-Modul auch die Split-Methode zum Teilen von Zeichenfolgen. Diese Methode ist leistungsfähiger und kann basierend auf mehreren Zeichen gleichzeitig aufgeteilt werden. Schauen wir uns str separat an. Was ist der Unterschied zwischen Split und Re-Split:

str1 = 'helloword,i;am\nalex'
str2 = str1.split(',')
print(str2)
import re
str3 = re.split('[,|;|\n]',str1)
print(str3)
#下面是不同的输出结果
['helloword', 'i;am\nalex']
['helloword', 'i', 'am', 'alex']


Daran können wir die Authentizität des oben Gesagten erkennen.

4. findall:

Die findall-Methode erscheint grundsätzlich gleichzeitig mit der Kompilierungsmethode. Ihre Verwendung ist:

Zuerst Konvertieren Sie die Zeichenfolgenform eines regulären Ausdrucks durch Kompilieren in eine Musterinstanz und rufen Sie dann mithilfe der Musterinstanz die Findall-Methode auf, um ein Übereinstimmungsobjekt zu generieren und das Ergebnis zu erhalten. Schauen wir uns zunächst die Voreinstellungen im regulären Ausdruck an . Sonderzeichenbedeutungen:

 d entspricht einer beliebigen Dezimalzahl und entspricht der Klasse [0-9].

D entspricht jedem nicht numerischen Zeichen; es entspricht der Klasse [^0-9].

 s entspricht jedem Leerzeichen; es entspricht der Klasse ["t"n"r"f"v].

 S entspricht jedem Nicht-Leerzeichen; es entspricht der Klasse [ ^ "t "n"r"f"v].

w entspricht jedem alphanumerischen Zeichen; es entspricht der Klasse [a-zA-Z0-9_].

 W entspricht jedem nicht-alphanumerischen Zeichen; es entspricht der Klasse [^a-zA-Z0-9_].

Nachdem wir die Bedeutung dieser Sonderzeichen gelesen haben, geben wir ein weiteres Beispiel zur Veranschaulichung des obigen Arguments:

import re
str1 = 'asdf12dvdve4gb4'
pattern1 = re.compile('\d')
pattern2 = re.compile('[0-9]')
mch1 = pattern1.findall(str1)
mch2 = pattern2.findall(str1)
print('mch1:\t%s'% mch1)
print('mch2:\t%s'% mch2)
#输出结果
mch1: ['1', '2', '4', '4']13 mch2: ['1', '2', '4', '4']


oben Die beiden Beispiele of kann das obige Argument gut veranschaulichen und auch zeigen, dass das Sonderzeichen d tatsächlich mit [0-9] identisch ist. Aus den Ausgabeergebnissen geht hervor, dass Sie nicht jede Zahl in eine aufteilen möchten Element und fügen Sie es in die Liste ein. Wenn Sie jedoch 12 als Ganzes ausgeben möchten, können Sie Folgendes tun: (Dies wird durch Hinzufügen eines +-Zeichens nach d erreicht. Das +-Zeichen bedeutet hier, ein Oder mehrere verbundene Dezimalzahlen einzufügen werden als Ganzes ausgegeben)

import re
str1 = 'asdf12dvdve4gb4'
pattern1 = re.compile('\d+')
pattern2 = re.compile('[0-9]')
mch1 = pattern1.findall(str1)
mch2 = pattern2.findall(str1)
print('mch1:\t%s'% mch1)
print('mch2:\t%s'% mch2)
#输出结果
mch1: ['12', '4', '4']
mch2: ['1', '2', '4', '4']


Lassen Sie uns ein weiteres kleines Beispiel geben. Dieses Beispiel kombiniert Sonderzeichen und die Unterfunktion von re, um das Zeichen Alle Leerzeichen in der Zeichenfolge zu realisieren werden entfernt:

import re
str1 = 'asd \tf12d vdve4gb4'
new_str = re.sub('\s*','',str)
print(new_str)
#输出结果
asdf12dvdve4gb4


5. Metazeichen:

Normalerweise handelt es sich bei den genannten Binärzeichen um 2 Metazeichen : . ^ $ * + ? { } [ ] | ( )

Die Metazeichen, die wir zuerst untersuchen, sind „[“ und „]“. Sie werden häufig verwendet, um eine Zeichenkategorie anzugeben, also einen Zeichensatz, den Sie abgleichen möchten. Zeichen können einzeln aufgelistet werden, oder zwei durch ein „-“-Zeichen getrennte vorgegebene
-Zeichen können zur Darstellung eines Zeichenbereichs verwendet werden. Beispielsweise stimmt [abc] mit jedem Zeichen unter „a“, „b“ oder „c“ überein. Sie können auch das Intervall [a-c] verwenden, um denselben Zeichensatz darzustellen, was den gleichen Effekt wie ersteres hat. Wenn Sie nur Kleinbuchstaben abgleichen möchten, sollte RE als [a-z] geschrieben werden. Metazeichen haben in Kategorien keine Auswirkung. Beispielsweise entspricht [akm$] jedem der Zeichen „a“, „k“, „m“ oder „$“; „$“ wird normalerweise als Metazeichen verwendet, seine Eigenschaften werden jedoch innerhalb der Zeichenklasse entfernt , Kehren Sie zum normalen Zeichensymbol
zurück.

    []:元字符[]表示字符类,在一个字符类中,只有字符^、-、]和\有特殊含义。字符\仍然表示转义,字符-可以定义字符范围,字符^放在前面,表示非.(这个在上面的特殊字符示例中也有提现),

    + 匹配+号前内容1次至无限次
    ? 匹配?号前内容0次到1次
    {m} 匹配前面的内容m次
    {m,n} 匹配前面的内容m到n次

    下面通过一个小例子,来阐述一下上面的字符在元字符[]中的使用:(在下面的这个例子中,要注意的有两点:一是在\d+后面的?号的含义,二是在匹配的前面加上了一个字符r,其实在这个示例中,加与不加都可以显示一样的结果)

>>> import re
>>> print(re.findall(r"a(\d+?)","a123b"))
['1']
>>> print(re.findall(r"a(\d+)","a123b"))
['123']
>>>


以上所述是小编给大家介绍的python 正则表达式学习小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!

更多python 正则表达式学习小结相关文章请关注PHP中文网!

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