正则表达式主要用来查找和匹配字符串的。
一、正在表达式基础
字符 描述 示例 TIY
\ 示意特殊序列(也可用于转义特殊字符)如:空白字符 "\s"
. 任意1个字符(换行符除外) "he..o"
^ 起始于 "^hello"
$ 结束于 "world$"
* 零次或多次出现 "aix*"
+ 一次或多次出现 "aix+"
{} 确切地指定的出现次数 "al{2}"
| 两者任一 "falls|stays"
[] 一组字符 "[a-m]" ,具体用法如下
集合 描述
[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] 返回介于 0 到 9 之间的任何数字的匹配项
[a-zA-Z] 返回字母顺序 a 和 z 之间的任何字符的匹配,小写或大写
2、Python正则表达式常用函数
Python 提供名为 re 的内置包,可用于处理正则表达式。
导入 re 模块:import re
函数 描述
findall 返回包含所有匹配项的列表
search 如果字符串中的任意位置存在匹配,则返回 Match 对象
split 返回在每次匹配时拆分字符串的列表
sub 用字符串替换一个或多个匹配项
1、findall() 函数
findall() 函数返回包含所有匹配项的列表;如果未找到匹配,则返回空列表。
示例1:匹配项中不带正则字符
import re
str = "China is a great country"
x = re.findall("a", str)
print(x)
运行返回如下:
[‘a’, ‘a’, ‘a’]
示例2:匹配项中带正则字符
import re
str = "You are a good-tempered boy"
x1 = re.findall('g..',str)
x2 = re.findall('o{2}',str)
print(x1)
print(x2)
返回结果:
[‘goo’]
[‘oo’]
2、search() 函数
search() 函数搜索字符串中的匹配项,如果存在匹配则返回 Match 对象。如果有多个匹配,则仅返回首个匹配项:如果未找到匹配,则返回值 None:
import re
str = "China is a great country"
x = re.search("a", str)
print(x)
Match 对象是包含有关搜索和结果信息的对象。Match 对象还提供了用于取回有关搜索及结果信息的属性和方法:
span() 返回的元组包含了匹配的开始和结束位置
import re
str = "China is a great country"
x = re.search("a", str)
print(x)
print(x.span()) #span() 返回的元组包含了匹配的开始和结束位置
运行后结果如下:
(4, 5)
3、split() 函数
split() 函数返回一个列表,其中字符串在每次匹配时被拆分,返回一个列表
import re
str = "China is a great country"
x = re.split("\s", str) #在每个空白字符处进行拆分
print(x)
运行返回如下:
[‘China’, ‘is’, ‘a’, ‘great’, ‘country’]
4、sub() 函数
sub() 函数把匹配项替换为选择的文本:
import re
str = "China is a great country"
x = re.sub("\s", "9", str) #用数字 9 替换每个空白字符
print(x)
运行后返回:
China9is9a9great9country
还可以通过指定 count 参数来控制替换次数:
import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2) #用数字 9 替换前2次出现的空白字符
print(x)
运行后返回:
China9is9a great country