Python基础--正则表达式

正则表达式是处理字符串非常有用的工具,学习起来也足够的蛋疼,为此总结一下正则表达式。Python中提供了re模块对正则表达式操作的功能。下面就了解正则表达式的元字符。

一.元字符

1."."

匹配换行符以外的任意单个字符

2."*"

匹配位于*之前的字符0或者多次

3."+"

匹配位于+之前的字符1一次或者多次,也就是贪婪模式

4."-"

在[]中表示范围

5."|"

匹配位于"|"之前或者之后的字符

6."^"

匹配行首,匹配以"^"后面的字符开头的字符串

7."$"

匹配行尾,匹配以$之前字符结束的字符串

8."?"

匹配位于"?"之前的0个或者1个字符,是非贪婪模式

9."\"

转义字符

10."\f"

匹配换页符

11."\n"

匹配换行符

12."\r"

匹配回车符

13."\b"

匹配字符串头或者尾

14."\d"

匹配任意数字

15."\D"

匹配非数字

16."\s"

匹配任意空白字符,空格、换行符等

17."\S"

与"\s"相反

18."\w"

匹配任意字母、数字和下划线

19."\W"

与"\w"相反

20."()"

代表()内是一个整体

21."{}"

按照"{}"内的次数进行匹配,例如:a{1,},匹配1个到多个字符a

22."[]"

匹配在"[]"内的字符

23.[^]

在"[]"内,^代表取反

二、re模块的主要方法

1.compile

创建模式对象,把正则表达式编译成Pattern实例,并用这个实例处理字符串获得匹配结果,结合下面几种查找方法使用。

import re#导入re模块
str1="acsdvfdbfdbdrsdfdsfvf"
pattern=re.compile(r'\w+d\w+')
print(pattern)
print(type(pattern))

打印的结果

2.search

在整个字符串进行查找,返回一个match对象

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#编译正则表达式,匹配B开头的单词
res=pattern.search(example)#Pattern的查找方法
print(res)

返回匹配到的字符串索引,一个match对象

3.match

在字符串开始处进行匹配,返回一个match对象

把search方法换成match方法

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#编译正则表达式,匹配B开头的单词
res=pattern.match(example)#Pattern的查找方法
print(res)

返回的是none,因为match是从字符串头开始匹配

pattern=re.compile(r'\bs\w+\b')#匹配s开头的单词

结果为:<_sre.SRE_Match object; span=(0, 8), match='shascddo'>

4.findall

找到匹配模式中的所有项

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bs\w+\b')
res=pattern.findall(example)#换成findall方法
print(res)

匹配结果:['shascddo'],和match方法不同,返回找到的列表,并且是在整个字符串中查找

5.split

根据表达式进行分割

import re
str1="asdcsd.sdvds...sdvs"
pat=re.compile(r'[\.]')#\在这里是转义字符,匹配.
pat=pat.split(str1,maxsplit=2)#maxsplit是最多切割次数
print(pat)

maxsplit是可选参数,不填会默认匹配所有的"."进行分割

打印结果:['asdcsd', 'sdvds', '..sdvs']

6.sub

替换字符串

import re
str1="sdvdIgdgbs"
pat=re.compile(r'[I]')#找到字符I
str1=pat.sub('i',str1)#替换
print(str1)

打印结果为:sdvdigdgbs

鉴于在学习正则的烦恼,总结一些常用的正则表达式和re的一些方法。参考:《python程序设计》。

猜你喜欢

转载自blog.csdn.net/weixin_40850689/article/details/82986942