Python 中 正则表达式

一、最近要对字符串执行很多操作,所以学了正则表达式

不得不说正则表达式对字符串的操作还是很给力的

runoob上面的教程:
Python中的正则表达式
正则表达式教程

Python中要使用正则表达式,首先要导入re模块 import re

二、常用函数(或者说方法)
re.match()
作用:尝试从字符串的起始位置匹配一个模式,如果匹配成功的话,就返回一个对象,否则返回none。注意,这个函数只匹配字符串开始的位置。

语法:re.match(pattern, string, flags=0)

  • pattern,匹配的正则表达式。
  • string,原字符串。
  • flags=0,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。(例如:flags=re.I 不区分大小写
    示例:
import re

str = 'Hello,world!'
s = re.match('H', str)
s1 = re.match('w', str)
print(s, s1,)
print(s.group())
# 输出
<re.Match object; span=(0, 1), match='H'>
None
H

如果要取出搜索到的值 可以用对象.group()来获取
示例:

import re

str = 'Hello,world!'
s = re.match('H.*r', str)
print(s)
print(s.group())
# 输出
<re.Match object; span=(0, 9), match='Hello,wor'>
Hello,wor

这里第一行输出了找到的对象,第二行输出了对象的值。
这个正则表达式的意思是,查找一个以 H开头R结尾,中间有0个或者多个字符组成的字符串
如果要取出找到的对象,在字符串中的索引值,可以用对象.span()来获取,这里不演示了

re.search()
作用:扫描整个字符串并返回第一个成功的匹配。
re.search() 和 re.match() 函数很像,只不过这个是在整个字符串中匹配
语法:re.search(pattern, string, flags=0)

re.findall()
语法:re.findall(pattern,string[, pos[, endpos]])

  • pattern,要查找的字符 或者正则表达式; string,原字符串; pos,查找字符串开始的位置,默认为0,从字符串开始的地方查找; endpos,查找字符串结束的位置,默认为字符串结尾。
    示例:
 import re
str = 'Hello,world!'
s = re.findall('l',str)
s1 = re.findall('.{2}l',str)
print(s)
print(s1)
print(s1[1])
# 输出
['l', 'l', 'l']
['Hel', 'orl']
orl

re.findall() 返回的是符合条件的一个列表,可以通过下标获取列表里的值。

re.finditer()
re.finditer() 和 re.findall(),使用方法一样,不过这个返回的是一个迭代器,可以通过循环把里面的值取出来
示例:

import re
str = 'Hello,world!'
s1 = re.finditer(r'.{2}l',str)
print(s1)
for i in s1:
    print(i.group())
# 输出
<callable_iterator object at 0x000002BC5050D070>
Hel
orl

re.split()
作用:把字符串按照指定的字符或者正则表达式分割,并返回分割后的列表,这个用处非常大
语法:re.split(pattern, string[, maxsplit=0, flags=0])

  • pattern,用什么字符进行分割,可以是字符,字符串,正则表达式。
  • string,要分割的原字符串
  • maxsplit,指定最多分割多少次,例如 maxsplit=1 只分割一次,默认是0,次数无限制。
  • flags=0,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
    有没发现以上介绍的这些方法参数很多都是相同的。
    示例:
import re
str = 'Hello,world!'
s1 = re.split('w',str)
s2 = re.split(',',str)
print(s1)
print(s2)
# 输出
['Hello,', 'orld!']
['Hello', 'world!']

第一个按照字母 ‘w’ 进行分割。 第二个按照逗号 ‘,’ 进行分割。
re.compile()
作用:编译正则表达式,生成一个正则表达式,或作创建一个正则表达式
语法:re.compile(pattern[, flags])
示例:

s1 = re.compile('^H.*o')

正则表达式修饰符 - 可选标志
前面哪些方法里 flags=0 这个参数的值,常用的有 re.I ,表示在匹配的时候不区分大小写。其他的模式请自行查阅教程。
正则表达式
这个也得自己去查阅教程了,去学。
这里举几个例子:

import re
str = ['Hello,=world!','Hello,*Python','Are you ok?','How =are you?']
s1 = re.compile('^H')  # 查找以H开头 的字符串
# 把列表中符合条件的值打印出来
for i in str:
    if re.search(s1,i):
        print(i)
# 输出
Hello,=world!
Hello,*Python
How =are you?
import re
str = ['Hello,=world!','Hello,*Python','Are you: ok?','How are you?']
s2 = re.compile('[=*:]')  # 查找包含 等号‘=’ 或者 星号‘*‘ 或者冒号‘:’ 的字符串
# 把列表中符合条件的值打印出来
for i in str:
    if re.search(s2,i):
        print(i)
# 输出
Hello,=world!
Hello,*Python
Are you: ok?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值