python中正则匹配之re模块

一、元字符

符号描述例子
\d匹配数字matchObj = re.match(r'\d', line)
\D匹配非数字matchObj = re.match(r'\D', line)
\w匹配数字、字母、下划线、中文matchObj = re.match(r'\w', line)
\W匹配非数字、字母、下划线、中文matchObj = re.match(r'\W', line)
\s匹配空白符matchObj = re.match(r'\s', line)
\S匹配非空白符matchObj = re.match(r'\S', line)
\t匹配Tab键matchObj = re.match(r'\t', line)
\n匹配回车matchObj = re.match(r'\n', line)
.匹配除换行符外任意一个字符matchObj = re.match(r'.', line)
re.S使 . 匹配所有字符matchObj = re.match(r'.*', line,re.S)
re.I匹配大小写matchObj = re.match(r'[a-z]*', line,re.I)
^匹配以某字符开头matchObj = re.match(r'(^A)', line)
$匹配以某字符结尾matchObj = re.match(r'.*Z$', line)
A|B匹配A或者BmatchObj = re.match(r'(A|B)', line)
()匹配分组matchObj = re.match(r'(.*)', line)
(?P<name>.*)匹配分组并且命名分组为“name”,返回一个字典matchObj = re.match(r'.*(?P<name>\d+), line)

二、常用字符组

符号描述
[0-9]、[a-z]、[A-Z]、[0-9A-z]匹配数字、小写字母、大写字母
[^abc]匹配除abc以外的所有字符
2[0-9]匹配20-29的数字

三、量词符号

符号描述
{n}、{n,}、{n,m}重复n次、至少n次、n到m次
0到1次
+至少1次
*0到无数次

四、贪婪模式与非贪婪模式

符号描述
a.*b贪婪模式,在ab之间匹配所有的字符
a.*?b非贪婪模式,会在符合条件的基础上尽量少的匹配其他内容
s="IP地址192.168.2"
url=re.match(r".*(?P<ip>\d+.\d+.\d+)",s)
url=re.match(r".*?(?P<ip>\d+.\d+.\d+)",s)

>>>168.2  贪婪模式
>>>192.168.2  非贪婪模式

五、具体实现

1.re.math()函数

        match() 试图从字符串的开始位置对模式进行逐个匹配,如果匹配成功,就返回一个匹配对象,如果匹配失败,就返回None,group()方法能显示成功匹配的对象。

ret = re.match("hello","hello word")
print(ret.group())  # 使用group()方式返回对应的分组

2、re.search()介绍

        re.match() 是从字符串的开始位置寻找匹配,任何位置都可以被匹配,返回的是第一次出现的匹配对象(因为正则字符串中可能会多出匹配)。

ret = re.search("hello","ahello word")  # 搜索成功
print(ret.group())  # hello

3、re.fildall()介绍

        re.fildall() 对整个字符串从左到右进行匹配,返回所有匹配对象的列表。

ret = re.fildall('\d+','hello123,word456')
print(ret)
>>>['123','456']

4、re.compile()介绍

        re.compile() 对整个正则表达式进行预编译,生成表达式对象,用于正则匹配。

import re
rule = re.compile('\d+')
ret = rule.findall('hellow word456')
print(ret)
>>>456

5、re.split()介绍

        re.split()方法与字符串的切割方法一样,返回的是一个列表。

strs = 'zhangsan123wangwu345we'
set = re.split('\d+',strs)
print(set)
>>>['zhangsan', 'wangwu', 'we']

6、re.sub()介绍

        re.sub() 批量替换字符串中某个字符,如:将'hello word'替换成'HELLO word'。

strs = 'hello word'
ret = re.sub('hello','HELLO',strs)
print(ret)
>>>HELLO word
# 使用正则来匹配替换
strs = 'abcd123efg345hi'
ret = re.sub(r'\d+','HELLO',strs)
print(ret)
>>>abcdHELLOefgHELLOhi
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值