【Python】正则表达式

pattern 正则表达式模式字符串

实例描述
^匹配开头
$匹配末尾
.匹配任意字符,除了换行
[amk]方括号内,匹配其中任意 此处为匹配‘a’,‘m’,'k’任意一个
[^amk]方括号内,前面加^,匹配除‘a’,‘m’,'k’的其它任意字符
re*匹配0个或多个表达式
re+匹配1个或多个表达式
re?匹配0个或多个表达式 例如‘’1010001 ‘.?1’匹配的是101,而’.*1’匹配1010001
re{n}匹配n个表达式
ab
(re)匹配re 并成组,即group()中的的组
\s匹配空字符串,等价 [\t\n\r\f]
\S匹配非空字符串
\d匹配任意数字 [0-9]
\D匹配非数字
[a-zA-Z0-9]匹配任意数字及字母

函数

re.match(pattern, string, flags=0)

函数描述
re.match(pattern, string, flags=0)从起始位置开始匹配
re.search(pattern, string, flags=0)扫描并返回第一个匹配成功的
re.findall(pattern, string, flags=0)扫描并返回所有符合的 形成列表
re.re.sub(pattern, repl, string, count=0, flags=0)pattern : 正则中的模式字符串。;repl : 替换的字符串,也可为一个函数。;string : 要被查找替换的原始字符串。;count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。;flags : 编译时用的匹配模式,数字形式。

例子

摘抄至菜鸟教程

"对于serch和match 用group()"
line = "Cats are smarter than dogs"

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
# out
earchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

例子记录

  1. 匹配log文件所有的数值
    例如2021-09-07 15:51:42,301 letter_train.py[line:229] INFO: Epoch:0 Train accuracy: 48.68%(37/76) true:100.00%(37/37) fake:0.00%(0/39) Test accuracy: 45.16%(14/31) true:100.00%(14/14) fake:0.00%(0/17)
    这里面的Epoch数 和所有的%号前的数字
    pattern = re.compile(r'.*INFO: Epoch:(\d*)\s*Train accuracy:\s*([\d\\.]*)%.*true:\s*([\d\\.]*)%.*fake:\s*([\d\\.]*)%.*Test accuracy:\s*([\d\\.]*)%.*true:\s*([\d\\.]*)%.*fake:\s*([\d\\.]*)%.*')
    pattern.match("2021-09-07 15:51:42,301 letter_train.py[line:229] INFO: Epoch:0 Train accuracy: 48.68%(37/76)	true:100.00%(37/37)	fake:0.00%(0/39)	Test accuracy: 45.16%(14/31)	true:100.00%(14/14)	fake:0.00%(0/17)").groups()
    Out[27]: ('0', '48.68', '100.00', '0.00', '45.16', '100.00', '0.00')
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值