0, Vorwort
2.2, `re.ASCII`(`re.A`)
2.3, `re.DOTALL`(`re.S`)2.4, `re.MULTILINE`(`re.M` )
2.5 , „re.VERBOSE“(zu 3.1.1import re
re.IGNORECASE
(re.I
)re.findall
erwähnt werden, da es sich um die Funktion handelt, die in diesem Abschnitt verwendet wird. re.findall(pattern, string, flag=0)
: Suchen Sie an einer beliebigen Stelle in der Zeichenfolge und geben Sie eine Liste zurück. pattern
ist das zu vergleichende Zeichen (String), string
ist die Suchquelle, flag
ist der Modifikator, der Standardwert ist 0text = "I'm Jasmine-Feng. My student number is No. 321432"pattern = r"Jasmine-FENG"print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))
Default: []Ignore upper/lower case: ['Jasmine-Feng']Process finished with exit code 0
2.2, re.ASCII
(re.A
)
re.A
stimmt nur mit Zeichen überein, die vom ASCII-Code unterstützt werden Auf welche Zeichen bezieht es sich konkret? Das Bild unten stammt aus der Baidu-Enzyklopädie.
re.A
ist, kann er nicht mit chinesischen Zeichen übereinstimmen. ~
text = "我是Jasmine-Feng. 我的学号是No. 321432"pattern = r"\w+"print('Default: ', re.findall(pattern,text))print('ASCII: ', re.findall(pattern,text,flags=re.A))
w+
wird verwendet, um ein oder mehrere alphanumerische und unterstrichene chinesische Zeichen zuzuordnen 2.3, re.DOTALL
(re.S
)
Im regulären Ausdrucksmodus wird .
für
Default: ['我是Jasmine', 'Feng', '我的学号是No', '321432']ASCII: ['Jasmine', 'Feng', 'No', '321432']Process finished with exit code 0
.*
Die Funktion ist zu Finde Zeichen (Strings) mit einer Länge von mindestens 0, emmm, das scheint Unsinn zu sein? Solange der gesamte Absatz nicht durch ein Zeilenumbruchzeichen abgeschnitten wird, können Sie tatsächlich die gesamte Zeichenfolge (plus eine leere Zeichenfolge) erhalten.
text = "我\t是Jasmine-F\neng. 我%的◉学号是No. 321432"pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))
2.4, re.MULTILINE
(re.M
)
$
entspricht dem Ende der Zeichenfolge, ^
Sucht den Anfang der Zeichenfolge. Wenn Sie eine neue Zeile umbrechen, können Sie den Anfang/das Ende einer neuen Zeile nicht finden. Sie können jedoch re.M
verwenden um es zu ändern, das ist der Mehrzeilenmodus.
Default: ['我\t是Jasmine-F', '', 'eng. 我%的◉学号是No. 321432', '']DOTALL: ['我\t是Jasmine-F\neng. 我%的◉学号是No. 321432', '']Process finished with exit code 0
text = "我\t是Jasmine-F\neng. 我%的◉\n学号是No. 321432"pattern = r'.$'pattern2 = r'^.'print('Default, end: ', re.findall(pattern, text))print('MULTILINE, end: ', re.findall(pattern, text, re.M))print('Default, start: ', re.findall(pattern2, text))print('MULTILINE, start: ', re.findall(pattern2, text, re.M))
re.IGNORECASE
(re.I
)虽然第1节是常量,但我们必须先简要提一下re.findall
这个函数,因为它是贯穿这一节的函数。re.findall(pattern, string, flag=0)
: 从字符串任意位置查找,返回一个列表。pattern
是欲匹配的字符(串),string
是查找源,flag
是修饰符,默认是0
re.I
的作用是忽略字符大小写
Default, end: ['2']MULTILINE, end: ['F', '◉', '2']Default, start: ['我']MULTILINE, start: ['我', 'e', '学']Process finished with exit code 0
N.B. pattern被赋了一个r字符串,这个r字符串的作用是避免转义,r是raw的缩写,也就是保持原样的意思。可看这篇博文。一般来说,使用正则表达式都会用到这个r字符串。
text = '朋友们好啊!我是xxxxxx拳掌门人xxx~'pattern = r'''朋友们 # 主语 好啊! # 谓语 '''print(re.findall(pattern, text,re.VERBOSE))
在默认情况下,区分大小写,找不到ENG;若不区分,则可以找到eng。
2.2、re.ASCII
(re.A
)
re.A
的作用是只匹配ASCII码支持的字符,那么具体指哪些字符呢?下图来自百度百科。
汉字是不在这个里面的,所以如果修饰符是re.A
的话就匹配不了汉字了哈~
['朋友们好啊!']Process finished with exit code 0
w+
的作用是匹配一个或多个字母数字下划线汉字
text = 'Hello everybody!\n我是xxxxxx拳掌门人xxx~'pattern = r'BODY.*$'print(re.findall(pattern, text, re.I))print(re.findall(pattern, text, re.M))print(re.findall(pattern, text, re.M | re.I))
2.3、re.DOTALL
(re.S
)
在正则表达式模式中,.
是用来
[][]['body!']Process finished with exit code 0
.*
的作用是匹配长度至少为0的字符(串),emmm,好像是句废话?事实上,只要整段话不被换行符截断,就可以得到整个字符串(外加一个空字符串)。
2.4、re.MULTILINE
(re.M
)
$
匹配定位到字符串末尾,^
定位到字符串开头,默认情况下,如果换行,是不能定位到新一行的行头/尾的,而用re.M
修饰则可以,也就是多行模式。
2.5、re.VERBOSE
(re.X)
verbose是“详实的、冗长的”意思,通过该修饰符可以在正则表达式中加入注释。注意,是往pattern
里面加,不是往text
加!我一开始以为是可以往text
加注释,然后调试半天都得不到结果。。。
2.6、修饰符的叠加
使用|
可以叠加修饰。
3、正则表达式函数
3.1、查找单个匹配项的函数
函数 | 功能 |
---|---|
search |
从任意位置开始搜索 |
match |
从开头搜索,不用完全匹配 |
fullmatch 2.5, re.VERBOSE (re. Beachten Sie, dass Sie es zu pattern hinzufügen, nicht zu text ! Zuerst dachte ich, ich könnte Kommentare zu text hinzufügen, aber nach längerem Debuggen konnte ich keine Ergebnisse erzielen. . . | rrreeerrreee2.6. Überlagerung von Modifikatoren |
|
, um Änderungen zu überlagern. rrreeerrreee🎜🎜3. Funktion für reguläre Ausdrücke🎜🎜🎜🎜3.1. Funktion zum Finden einer einzelnen Übereinstimmung🎜🎜
function | function 🎜 |
---|---|
Das obige ist der detaillierte Inhalt vonHinweise zu regulären Python-Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!