ZeichensatzLOGIN

Zeichensatz

Okay, durch die obigen Beispiele haben wir ein vorläufiges Verständnis der regulären Ausdrücke von Python. Sie fragen sich vielleicht, was die anderen Regeln regulärer Ausdrücke sind und was die Buchstaben bedeuten.

Eigentlich besteht darüber kein Grund zur Sorge. Die entsprechende Liste der Regeln für reguläre Ausdrücke wird später in diesem Kapitel angegeben, und diese Dinge können leicht bei Google im Internet gefunden werden. Nun werden wir unser Verständnis regulärer Ausdrücke weiter vertiefen und über den Zeichensatz regulärer Ausdrücke sprechen.

Der Zeichensatz ist ein Satz von Zeichen, die von einem Paar eckiger Klammern „[]“ umgeben sind. Mithilfe eines Zeichensatzes können Sie eines von mehreren Zeichen zuordnen.

Wenn Sie beispielsweise C[ET]O verwenden, um den CEO oder CTO abzugleichen, bedeutet das, dass [ET] ein E oder ein T darstellt. Wie das oben erwähnte [a-z] handelt es sich um einen reinen Kleinbuchstaben. Der Bindestrich „-“ wird hier verwendet, um einen Zeichenbereich aus aufeinanderfolgenden Zeichen zu definieren. Natürlich kann diese Schreibweise mehrere Zeichenbereiche enthalten, wie zum Beispiel: [0-9a-fA-F], was einer einzelnen Hexadezimalzahl entspricht und die Groß-/Kleinschreibung nicht berücksichtigt. Beachten Sie, dass die Reihenfolge der Zeichen- und Bereichsdefinitionen keinen Einfluss auf die Übereinstimmungsergebnisse hat.

Tatsächlich habe ich so viel gesagt, ich möchte nur beweisen, dass die Zeichenbeziehung zwischen einem Paar eckiger Klammern „[]“ in einem Zeichensatz eine Oder-Beziehung ist Beispiel:

import re
a = 'uav,ubv,ucv,uwv,uzv,ucv,uov'
# 字符集
# 取 u 和 v 中间是 a 或 b 或 c 的字符
findall = re.findall('u[abc]v', a)
print(findall)
# 如果是连续的字母,数字可以使用 - 来代替
l = re.findall('u[a-c]v', a)
print(l)
# 取 u 和 v 中间不是 a 或 b 或 c 的字符
re_findall = re.findall('u[^abc]v', a)
print(re_findall)
输出的结果:
['uav', 'ubv', 'ucv', 'ucv']
['uav', 'ubv', 'ucv', 'ucv']
['uwv', 'uzv', 'uov']

Im Beispiel wird der negierte Zeichensatz verwendet, d. h. wenn auf die linke eckige Klammer „[“ eine spitze Klammer „^“ folgt, wird der Zeichensatz negiert . Beachten Sie, dass der negierte Zeichensatz mit einem einzelnen Zeichen übereinstimmen muss. Zum Beispiel: q[^u] bedeutet nicht: Übereinstimmung mit einem q, ohne dass u ihm folgt. Es bedeutet: Übereinstimmung mit einem q, gefolgt von einem Zeichen, das nicht u ist. Die Einzelheiten können durch einen Vergleich der Ausgabeergebnisse im obigen Beispiel verstanden werden.

Wir alle wissen, dass reguläre Ausdrücke selbst einige Regeln definieren, z. B. d, die mit allen numerischen Zeichen übereinstimmen. Tatsächlich wird unten auch ein Beispiel durch das Zeichen geschrieben set Das Formular interpretiert diese Sonderzeichen.

import re
a = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789'
# 概括字符集
# \d 相当于 [0-9] ,匹配所有数字字符
# \D 相当于 [^0-9] , 匹配所有非数字字符
findall1 = re.findall('\d', a)
findall2 = re.findall('[0-9]', a)
findall3 = re.findall('\D', a)
findall4 = re.findall('[^0-9]', a)
print(findall1)
print(findall2)
print(findall3)
print(findall4)
# \w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]
findall5 = re.findall('\w', a)
findall6 = re.findall('[A-Za-z0-9_]', a)
print(findall5)
print(findall6)

Ausgabeergebnis:

['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_


nächsten Abschnitt
KapitelKursunterlagen