正则表达式

正则表达式

元字符

ctrl + enter 表格快速添加一个行

Ctrl+ shift + delete 表格快速删除一行

元字符说明
.字符匹配除了换行符之外的任何单个字符
*字符匹配前表达式任意次,包括0次,尽量多的匹配字符串
+匹配前面的子表达式一次或多次,但不包括0次
匹配前面的子表达式0次或1次
\表示对元字符进行转义
[]表示匹配[] 中几个字符之一
{}表示{}前面的字符匹配指定的次数
()表示组选择
\d[0-9]
\D[^0-9]
\s[\t\n\r\f\v]
\S[^\t\n\f\v]
\w匹配任意一个文字字符
\W[^a-zA-Z-9]

贪婪模式和非贪婪模式

贪:<.*> 所谓的贪婪就是从第一个合适的位置开始进行匹配,直到最后一个符合位置为止

# 贪婪模式
source = '<html><head><title>Title</title>'
p = re.compile(r'<.*>')
print(p.findall(source))
# ['<html><head><title>Title</title>']

非贪: <.*?> 非贪婪就是从第一个合适的位置开始到下一个符合的位置为止

# 非贪婪模式
source = '<html><head><title>Title</title>'
p = re.compile(r'<.*?>')
print(p.findall(source))
# ['<html>', '<head>', '<title>', '</title>']

re库

p = r'\d{3}'
res = re.match(p,'a123')  
print(res)
# None
# match 是从起始位置为0的开始寻找,但当第一个位置不符合返回值为空,返回值为一个对象

res = re.search(p,'a123')  
print(res)
#search 搜索的范围是全局,但第一个位置不符合时会从下一个开始进行匹配,返回值为一个对象

切分与分组

re库中也存在split() 切分方法

当需要切分的条件较多,这时再使用 字符串中的split()只能设置一个条件 这时就需要re库中的split() 切分方法,使用正则表达式添加多个切分条件

p = r'[\s\t,;]'
res = re.split(p,'asa jkjk,123  df;sfdjj')
print(res)
# ['asa', 'jkjk', '123', '', 'df', 'sfdjj'] 结果是以列表的形式返回

分组group(参数) 当中的参数表示正则表达式中()括号 分成的个数

p = '^(\d{3})-(\d{3,8})$'
res = re.match(p,'021-12345')
print(res)
# <re.Match object; span=(0, 9), match='021-12345'>
res = re.match(p,'021-12345').group(0)
print(res)
# 021-12345
res = re.match(p,'021-12345').group(1)
print(res)
# 021
res = re.match(p,'021-12345').group(2)
print(res)
# 12345

替换

sub()单单返回替换后的内容

subn() 返回替换后的内容的同时还返回替换的次数

p = re.compile(r'\d{3}')
str = '123sadsa234sdf543dgds'
print(p.sub('XXX',str))
# XXXsadsaXXXsdfXXXdgds
print(p.subn('XXX',str))
# ('XXXsadsaXXXsdfXXXdgds', 3)

other

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

花了一下午的时间学习了一下正则表达式的一些基本操作方法,正则表达式是真多东西,大家要踊跃翻阅blog

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值