python正则表达式

原子

原子为正则表达式中最基本的组成单位

import re

# 普通字符做原子
s = "hello"
p="he"
r = re.search(p,s)
print(r)

# 非打印字符,如\n \t
s = "mmmmmmm"
p = "\n"
r = re.search(p,s)
print(r)

# 通用字符作为原子
'''
\w  字母,数字,下划线
\W 除字母,数字,下划线
\d  十进制数字
\D  除十进制数字
\s   空白字符
\S  除空白字符
'''
s="mmmm123456789aaaaa"
p="\w\d\d"
r = re.search(p,s)
print(r)

# 原子表
s="abcamcbdcadc"
p="a[db]c" # 在两个字符里选一个
p2 = "a[^bd]c" # ^代表非
r = re.search(p,s)
r2 =re.search(p2,s)
print(r)
print(r2)

在这里插入图片描述

元字符

正则表达式中有特殊含义的字符

import re
'''
.        除换行外任意一个字符
^       开始位置
$        结束位置
*        0/1/多次
?      0/1次
+       1/多次
{n}     恰好n次
{n, }   至少n次
{n,m} 至少n次,至多m次
|        模式选择符 或
()       模式单元
'''

s="nihaooooawoojiao"
p="ni..."
p1 = "j...$"
p2 = "^.i..."
p3="ni.*"
p4="wo+"
p5 = "hao{4}"
p6 = "hao{1,2}"
r = re.search(p,s)
r1 = re.search(p1,s)
r2 = re.search(p2,s)
r3 = re.search(p3,s)
r4 = re.search(p4,s)
r5 = re.search(p5,s)
r6 = re.search(p6,s)
print(r)
print(r1)
print(r2)
print(r3)
print(r4)
print(r5)
print(r6)

在这里插入图片描述

模式修正符

可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式含义,从而实现一些匹配结果的调整

import re

'''
I   匹配时忽略大小写
M 多行匹配
L   本地化识别匹配
U  unicode
S  让 . 匹配包括\n
'''
s = "Python"
p="py"
r = re.search(p,s,re.I)
print(r)

在这里插入图片描述

贪婪模式与懒惰模式

贪婪模式:尽可能多的匹配
懒惰模式:尽可能少的匹配

import re

s="pythony"
p1="p.*y" # 贪婪模式
p2 = "p.*?y" # 懒惰模式
r1  = re.search(p1,s)
r2  = re.search(p2,s)
print(r1)
print(r2)

在这里插入图片描述

正则表达式函数
import re

# re.match()  从头开始匹配
# re.search()  任何位置都可以开始匹配
s="python12yhdqpnypionuyio234wjop"
p ="hd"
r1  = re.search(p,s)
r2 = re.match(p,s)
print(r1)
print(r2)

# 全局匹配 re.compile(正则表达式).findall(数据)
p1 = "p.*?y"
r = re.compile(p1).findall(s)
print(r)

# re.sub() 替换
p1 = "\d+"
p2 = "999"
r= re.sub(p1,p2,s)
print(r)

在这里插入图片描述

常见正则表达式实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值