Python中的正则表达式详细介绍

在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。

在Python中使用正则表达式只需要导入一个re包就好了,下面将介绍一下正则表达式的一些主要符号与使用方法

.:注意,我前面写了一个点,点的意思是表示任意的内容,如1,2,3,a,b,!,@等等等等

a.:表示在a的后面匹配任意的内容,ab,a1,a2,ad这些都是符合的

*:表示前面的一个内容出现0次到多次

a.*:符合的有a,a1,ab,aaaa,a1111,aaabbb等等

+:表示前面的一个内容出现一次到多次

a.+:符合的有aa,ab,a1,ac等,它与*的区别就在于+至少要有一次

?:表示前面的一个内容出现0次到1次

a.?: 符合的有a,a1,a2 等

^:表示以什么开头

$:表示以什么结尾

{n,m}:表示内容重复n次

\d\d\d   可以写成\d{3}

{n,m}表示最少重复n次,最多重复m次

下面将进行代码演示

pattern=re.compile('(\d+)(\w+)')
content='123helloWorld'
# match匹配
result=re.match(pattern,content)
if result:
    print(result)#返回的是一个匹配的对象
    print(result.group(0))#返回的是符合要求的全部内容
    print(result.group(1))
    print(result.group(2))
else:
    print('不符合')

这是一个简单的正则表达式使用代码,compile的意思是编译,代码的目的是从‘123helloWorld’中找出第一个符号为整数并且整数至少有一个的一串字符,这样就会找出123,同理后面的helloWorld是被第二个括号里的(\w+)找出的

输出的结果为

<_sre.SRE_Match object; span=(0, 13), match='123helloWorld'>
123helloWorld
123
helloWorld

# match匹配的是内容的开始部分,作用等同于startswith
result=re.match(pattern,'love myself')
print(result)

像这样的代码最后输出的就是None,因为开头没有数字,所以这串字符与正则表达式不匹配。

正则表达式分为贪婪模式与非贪婪模式,默认是贪婪模式,意思就是尽量找到所有的符合要求的内容,非贪婪模式就是找到第一个符合要求的就不找了。

.*称之为贪婪模式

content='aabbababa11b222'
pattern=re.compile('(a.*b)')
result=pattern.match(content)
print(result)

这段代码最后会找出第一个a到最后一个b之间的字符串

*和+同为贪婪模式,但*是至少0次,+是至少1次

.*?称之为非贪婪模式

pattern=re.compile('(a.*?b)')
result=pattern.match(content)
print(result)

这段代码会找出第一个a到第一个b之间的字符串

正则表达式常用的方法有search,findall,sub

search是查找的意思,找到字符串当中第一个符合正则的内容。

findall会找到所有符合的内容。

sub 替换子串(字符串的一部分)

猜你喜欢

转载自blog.csdn.net/qq_37958990/article/details/81104860