正则表达式(re模块)
python中re模块支持正则表达式,本文主要介绍re模块。
python的re模块官方文件
什么是正则表达式
正则表达式就是用一个文本模式来匹配一组符合条件的字符串。
match方法和group方法
match方法用于指定文本模式和匹配字符串。match方法前两个参数必须指定,第一个参数为文本模式,第二个参数表示待匹配的字符串。
match方法匹配返回值为SRE_MATCH对象,得用group方法来返回字符串匹配不成功,返回None。
代码示例
import re
m=re.match('hello','hello world')
if m is not None:
print(m.group())
#运行结果为hello
search方法
search方法用于在一个字符串中搜索特定的文本字符串。它的参数与match方法相同。
代码示例
import re
m=re.search('abc','vabca')
if m is not none:
print(m.group()) #运行结果:abc
print(m) #运行结果:<re.Match object; span=(1, 4), match='abc'>
# span=(1.4)代表的是模式字符串在被查找字符串中的索引
特殊符号
在模式字符串中不仅只有字符,还有一些特殊的符号,他们每个代表着不同的涵义。
下面的列表介绍一些常用的特殊符号
符号 | 用途 |
---|---|
| | 选择符号(or) |
. | 代表任意字符 |
[] | 字符集 |
* | 重复字符串(0-n次) |
+ | 重复字符串(1-n次) |
\w | 表示任意一个字母或者数字 |
\d | 表示任意一个数字 |
{N} | 重复N次 |
^ | 字符串的开始 |
$ | 字符串的结束 |
\b | 单词的边界 |
? | 可选符号,是否存在 |
接下来将一一介绍这些特殊符号的具体用法
|符号
|符号是选择匹配符号,只要与其中一个相匹配,就可以匹配成功。
代码示例
import re
s='bike|car|truck'
m=re.match('bike',s)
if m is not None:
print(m.group()) #匹配成功,运行结果:bike
.符号
.符号可以替代任意一个单个字符
代码示例
import re
s='.ike'
m=re.match(s,'bike')
if m is not None:
print(m.group()) #匹配成功,运行结果:bike
[]符号
[]符号代表一个字符集,可以作为字符集中任意一个字符。
代码示例
import re
s=[a-z][A-Z][0-9] #[a-z]代表26个小写英文字母中的任意一个,后面的同理。
m=re.match(s,'sC1')
if m is not None:
print(m.group()) # 匹配成功,运行结果:sC1
*符号和+符号
和+符号功能类似,所以我们比较进行学习。两个符号都可以用来表示重复的字符串,比如aaa或者00等,其中**符号表示字符出现0-n次,+符号表示字符出现1-n次。**
代码示例
import re
s='[a-z]+[0-9]*'
m=re.match(s,'adsdc')
print(m.group()) #匹配成功,运行结果为:adsdc
m=re.search(s,'ad1234')
print(m.group()) #匹配成功,运行结果为:ad1234
\w符号和\d符号
\w代表的是任意一个字母或者任意一个数字,\d代表的是任意一个数字。
代码示例
import re
s='\wad\d'
m=re.match(s,'3ad3')
print(m.group()) #匹配成功,运行结果为:3ab3
{N}符号
{N}表示某个字符重复N次,只会修饰前一个字符。
代码示例
import re
s='abc{3}' #修饰c单个字符,而不是abc整个字符串
m=re.match(s,'abccca')
print(m.group()) #匹配成功,运行结果为:abccc
^符号和$符号
^符号代表着字符串的开始,$符号代表字符串的结束。
代码示例
import re
s='the$'
m=re.match(s,'sdgbfthe') #匹配成功
m=re.match(s,'thea') #匹配失败
s='^the'
m=re.match(s,'thea') #匹配成功
m=re.match(s,'sdgbfthe') #匹配失败
\b符号
\b符号用于表示单词的边缘(边缘的含义就是空格或者一些符号),在哪边表示哪边就是边缘,另一个边缘不做要求。使用时一般要用r在字符串的前面,使之不进行转义。
代码示例
import re
m=re.match(r'\bthis\b','what is this?') #匹配成功
m=re.match(r'this\b','thisisapig') #匹配不成功
?符号
?表示所修饰的字符可存在可不存在。
代码示例
import re
m=re.match('\w?wow(\d)+','wow123') #匹配成功