Python 正则表达式
-
-
正则表达式模块
Python有一个名为re的内置程序包,可用于处理正则表达式。导入re模块:import re
-
Python中的正则表达式
导入re模块后,可以开始使用正则表达式:搜索字符串以查看它是否以“The”开头并以“Spain”结尾:
尝试一下import re txt = "The rain in Spain" x = re.search("^The.*Spain$", txt)
-
正则表达式函数
re模块提供了一组函数,使我们可以在字符串中搜索匹配项:函数 描述 findall 返回包含所有匹配项的列表 search 如果字符串中任何地方都存在匹配项,则返回Match对象 split 返回一个列表,该字符串在每次匹配时均已拆分 sub 用字符串替换一个或多个匹配项 -
-
特殊序列
以下列表中的字符之一是一个特殊的序列,\其后具有特殊含义:字符 描述 例子 尝试 \A 如果指定的字符在字符串的开头,则返回匹配项 "\AThe" 尝试一下 \b 返回一个匹配项,其中指定字符在单词的开头或结尾 r"\bain"
r"ain\b"尝试一下 \B 返回存在指定字符的匹配项,但不在单词的开头(或结尾) r"\Bain"
r"ain\B"尝试一下 \d 返回字符串包含数字(0到9之间的数字)的匹配项 "\d" 尝试一下 \D 返回字符串不包含数字的匹配项 "\D" 尝试一下 \s 返回字符串包含空格字符的匹配项 "\s" 尝试一下 \S 返回字符串不包含空格字符的匹配项 "\S" 尝试一下 \w 返回一个匹配项,其中字符串包含任何单词字符(从a到Z的字符,0到9的数字以及下划线_字符) "\w" 尝试一下 \W 返回一个匹配项,其中字符串不包含任何单词字符 "\W" 尝试一下 \Z 如果指定的字符位于字符串的末尾,则返回匹配项 "Spain\Z" 尝试一下 -
字符集合
集合是在一对方括号[]内的一组字符,具有特殊含义:集合 描述 尝试 [arn] 返回存在指定字符(a,r或n)之一的匹配项 尝试一下 [a-n] 返回任何小写字符的匹配项,按字母顺序在a和n之间 尝试一下 [^arn] 返回除a,r和n之外的任何字符的匹配项 尝试一下 [0123] 返回存在任何指定数字(0、1、2或3)的匹配项 尝试一下 [0-9] 返回0到9之间的任何数字的匹配项 尝试一下 [0-5][0-9] 返回与00和59之间的任何两位数字相匹配的数字 尝试一下 [a-zA-Z] 返回字母和字母之间的任何匹配项,字母之间是小写或大写 尝试一下 [+] 在集合中+,*,.,|,(),$,{}没有特殊含义,因此[+]的意思是:返回字符串中任何+字符的匹配项 尝试一下 -
-
search()函数
search()函数在字符串中搜索匹配项,如果存在匹配项,则返回Match对象。如果存在多个匹配项,则仅返回匹配项的第一个匹配项:搜索字符串中的第一个空格字符:
尝试一下import re str = "The rain in Spain" x = re.search("\s", str) print("The first white-space character is located in position:", x.start())
如果找不到匹配项,则返回值None: -
-
-
Match对象
Match对象是包含有关搜索和结果信息的对象。注意:如果没有匹配项,则将返回 None 值,而不是Match对象。
进行搜索以返回Match对象:
尝试一下import re str = "The rain in Spain" x = re.search("ai", str) print(x) #this will print an object
Match对象具有用于检索有关搜索信息和结果的属性和方法:- .span()返回一个包含匹配的开始和结束位置的元组。
- .string返回传递给函数
- .group()返回匹配的字符串部分的字符串
打印第一个匹配项的位置(开始和结束位置)。正则表达式查找以大写字母“ S”开头的所有单词:
尝试一下import re str = "The rain in Spain" x = re.search(r"\bS\w+", str) print(x.span())
打印匹配的字符串部分。正则表达式查找以大写字母“S”开头的所有单词:
尝试一下import re str = "The rain in Spain" x = re.search(r"\bS\w+", str) print(x.group())
注意:如果没有匹配项,则将返回值None,而不是Match对象。