Python之正则运用

s = 'i love python very much'

pat = 'python'

r = re.search(pat,s)

print(r.span()) #(7,13)

s = '山东省潍坊市青州第1中学高三1'

pat = '1'

r = re.finditer(pat,s)

for i in r:

print(i)

# <re.Match object; span=(9, 10), match='1'>

# <re.Match object; span=(14, 15), match='1'>

s = '一共20行代码运行时间13.59s'

pat = r'\d+\.?\d+' # ?表示匹配小数点(\.)0次或1

r = re.findall(pat,s)

print(r)

# ['20', '13.59']

s = 'This module provides regular expression matching operations similar to

those found in Perl'

pat = r'\s+'

r = re.split(pat,s)

res = [i for i in r if re.match(r'[mMtT]',i)]

print(res) # ['This', 'module', 'matching', 'to', 'those']

content='<h>ddedadsad</h><div>graph</div>bb<div>math</div>cc'

pat=re.compile(r"<div>(.*)</div>") #贪婪模式

m=pat.findall(content)

print(m) # ['graph</div>bb<div>math']

content='<h>ddedadsad</h><div>graph</div>bb<div>math</div>cc'

pat=re.compile(r"<div>(.*?)</div>") #贪婪模式

m=pat.findall(content)

print(m) # ['graph', 'math']

content = 'graph math,,english;chemistry' # 这种

pat=re.compile(r"[\s\,\;]+") #贪婪模式

m=pat.split(content)

print(m) # ['graph', 'math', 'english', 'chemistry']

sub 替换

content="hello 12345, hello 456321"

pat=re.compile(r'\d+') #要替换的部分

m=pat.sub("666",content)

print(m) # hello 666, hello 666

. 匹配任意字符

^ 匹配字符串始位置

$ 匹配字符串中结束的位置

* 前面的原子重复01次多次

? 前面的原子重复一次或者0

+ 前面的原子重复一次或多次

{n} 前面的原子出现了 n

{n,} 前面的原子至少出现 n

{n,m} 前面的原子出现次数介于 n-m 之间

( ) 分组,需要输出的部分

\s 匹配空白字符

\w 匹配任意字母/数字/下划线

\W 和小写 w 相反,匹配任意字母/数字/下划线以外的字符

\d 匹配十进制数字

\D 匹配除了十进制数以外的值

[0-9] 匹配一个0-9之间的数字

[a-z] 匹配小写英文字母

[A-Z] 匹配大写英文字母

def snow(snow_count):

p.hideturtle()

p.speed(500)

p.pensize(2)

for i in range(snow_count):

r = random.random()

g = random.random()b = random.random()

p.pencolor(r, g, b)

p.pu()

p.goto(random.randint(-350, 350), random.randint(1, 270))

p.pd()

dens = random.randint(8, 12)

snowsize = random.randint(10, 14)

for _ in range(dens):

p.forward(snowsize) # 向当前画笔方向移动snowsize像素长度

p.backward(snowsize) # 向当前画笔相反方向移动snowsize像素长度

p.right(360 / dens) # 顺时针移动360 / dens

正则表达式
\A 匹配字符串开头
\Z 匹配字符串结尾,若存在换行,只匹配到换行前的结束字符串
\z 匹配字符串结尾,若存在换行,同时还会匹配换行符
^ 匹配开头 $ 匹配结尾
. 匹配除换行符之外的字符
[^...] 不在[]的字符,[^abc] 除了a,b,c之外的字符
? 匹配0个或1个字符,非贪婪匹配
{n} 精确匹配n个前面的字符
{n,m} 匹配n到m次字符片段,贪婪匹配

1.match() 该方法默认从字符串起始位置匹配,匹配返回结果,否则None
pattern='^hello.*world$' # 注意: 以hello开头,以world结尾

贪婪匹配
content = 'Hello 1234567 World'
result=re.match('^Hello.*(\d+).*World$')
print(result.group(1)) # 结果 7
# 当前贪婪匹配是的.*匹配尽可能多的数字,以至于\d+匹配到一个数字7
非贪婪匹配
result=re.match('^Hello.*?(\d+).*World$')
print(result.group(1)) # 结果 1234567
# 当前贪婪匹配是的.*?0匹配尽可能少的数字,以至于\d+匹配到数字1234567

修饰符:
re.I 忽略大小写
re.M 多行匹配,常依赖于^和$
re.S 使.匹配包括换行在内的所有字符
2.search()  扫描整个字符串
3.findall() 返回所有内容
4.sub() 可简化replace的操作
re.sub('pattern','','context') # 参数一:匹配字符;参数二:替换字符;参数三:原字符串
# 将匹配到的字符串替换为空
5) compile() 正则匹配到的字符编译成字符对象
context='2024-12-01 12:00'
pattern=re.compile('\d{2}:\d{2}')
result=re.sub(pattern,'',context)

摘抄之python书籍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值