一、前言
我们在代码的编写过程中,经常会匹配各种各样的字符串,这时我们使用正则表达式,就可以进行模糊匹配,以查找我们想要的结果
二、正则语法和使用
1、基本语法
模式 | 描述 |
---|---|
. | 匹配任意字符(不包括换行符) |
^ | 匹配开始位置,多行模式下匹配每一行的开始 |
$ | 匹配结束位置,多行模式下匹配每一行的结束 |
* | 匹配前一个元字符0到多次 |
…
我这里只是列举了一小部分,大家若是想了解完整的,可以去Python官方文档去看,这里只教大家如何使用
2、正则匹配的基本使用
要使用正则匹配的话,则离不开Python的一个内置模块,re模块,它有所有的正则表达式功能,我们来了解一下常用的几种方法
2.1、match方法
匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败
import re
line = "Hello, World"
matchObj = re.match('.', line) # 匹配一个任意字符,第一个字符则匹配到H
print(matchObj.group()) # 表示匹配到的完整文本字符
matchObj = re.match('.*', line) # 匹配多次任意字符,所以匹配到Hello, World
print(matchObj.group()) # 表示匹配到的完整文本字符
matchObj = re.match('l', line) # 在开头未能匹配到l
print(matchObj) # 输出None
结果: H
Hello, World
None
2.2、search方法
扫描整个字符串并返回第一个成功的匹配
import re
line = "Hello, World"
searchObj = re.search('.', line) # 匹配一个任意字符,第一个字符则匹配到H
print(searchObj.group())
searchObj = re.search('.*', line) # 匹配多次任意字符,所以匹配到Hello, World
print(searchObj.group())
searchObj = re.search('l', line) # 字符串中存在l,所以在扫描整个字符串时,是能够匹配到的
print(searchObj.group())
结果: H
Hello, World
l
2.3、compile方法
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供其他函数使用。
import re
pattern = re.compile('.') # 正则表达式为匹配任意一个字符,然后返回一个对象并赋值给pattern
m = pattern.match('Hello, World') # 使用match方法进行匹配
s = pattern.search('Hello, World') # 使用search方法进行匹配
print(m.group())
print(s.group())
结果: H
H
2.4、findall方法
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 match 和 search 是匹配一次 ,但findall 是匹配所有。
import re
pattern = re.compile(r'.') # 查找任意字符
result1 = pattern.findall('Hello, World') # 查找任意字符并返回符合条件的列表集合
result2 = pattern.findall('Hello, World', 5, 7) # 从字符串的第5个字符开始,第7个字符结束,查找任意字符并返回符合条件的列表集合
print(result1)
print(result2)
结果: ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd']
[',', ' ']
三、总结
本章教大家如何使用re模块进行正则的基本匹配,正则表达式完整使用起来,还是很复杂的,表达式稍不注意就会导致匹配错误甚至是无法匹配的结果,所以大家还是要多加练习