博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
match、search、sub、findall、compile区别
阅读量:6293 次
发布时间:2019-06-22

本文共 1738 字,大约阅读时间需要 5 分钟。

总结网络一些零碎知识,综合自己的理解:

 

函数名 原型 详解 返回类型 注意事项
re.match import re
re.match(pattern,string,flags)
pattern:正则表达式,匹配成功,返回一个Match,否则返回一个None
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等等
返回一个_sre.SRE_Match对象,其有两个方法:group()
groups()
他只会去从字符串的开始与正则表达式做匹配;
并不会与字符串的所有字符进行匹配
re.search re.search(pattern,string,flags) 与match一模一样,唯一区别:
他会去匹配整个字符串,而match只会去匹配字符串的开始
groups():返回一个元组:(group(1),group(2)...)不包括group(0)
group():默认返回group(0)
对于一个string,无论其中有多少个被匹配上的字符串,他永远只返回第一个匹配上的字符串
re.sub re.sub(pattern,repl,string,count) pattern:正则表达式
repl:替换后的字符
string:要匹配的字符串
count:替换的个数,0代表所有
返回替换后的string  
re.findall re.findall(pattern,string,flag) pattern:正则表达式
string:要匹配的字符串
flag:标志位
总是返回一个list,如果未匹配到任何,则返回一个空list 与match和search不同的是:他会将一个字符串中所有的匹配到的目标均返回至列表中
e.compile re.compile(pattern,flag) flag:编译标识:
I  IGNORECASE  忽略大小写
M  MULTILINE  多行匹配 针对于^和$使用
S  DOTALL  .号将匹配所有字符
X  VERBOSE  将忽略规则表达式中的空白,若需要使用则需\+空白,同时允许使用'#'在规则表达式中作注释说明
flag使用方法:如,re.MULTILINE
多个flag可以使用'|'来分隔
对规格表达式进行预编译,返回一个pattern对象,可以使用这个pattern对象调用match和search等方法 这种方式对于需要做大量相同匹配的正则表达式可以大大提高效率

 

例子说明:

1.match && search && findall:

import re

stringA = 'abcdefgh,123asd,333'

matchA_failed = re.match('\d',stringA)

print type(matchA_failed) #None obj.
print matchA_failed #None 他只匹配首位

matchA_success = re.match('...',stringA)

print type(matchA_success) #_sre.SRE_Match obj.
print matchA_success #_sre.SRE_Match obj.
print matchA_success.group() #该对象存在2个方法group()和groups(),
print matchA_success.groups()

searchA_success = re.search('\d+',stringA)
print searchA_success.group() #search和match完全一样,区别仅仅是,search全字段匹配
#返回的均为匹配到的第一个,此处search仅返回123

findall_success = re.findall('\d+',stringA)
print findall_success
#与上述不同的是,他返回一个列表,这个列表中包含了所有匹配到的内容

 

转载于:https://www.cnblogs.com/smile-zhou/p/3873684.html

你可能感兴趣的文章
大数据时代分析师 Splunk助大数据落地
查看>>
【前沿】何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现
查看>>
云计算中心的实施技术
查看>>
iOS中 支付宝钱包详解/第三方支付 韩俊强的博客
查看>>
赛可达推病毒攻击检测和情报分享服务
查看>>
《社交网站界面设计(原书第2版)》——2.10 自我反省式的出错信息
查看>>
【vue】webpack打包vue项目并且运行在Tomcat里面
查看>>
颠覆传统下载体验 QNAP迅雷系列NAS重磅登场
查看>>
物联网:从源头为生产环境安全把关
查看>>
英巴卡迪诺新年战略:支持Linux提供中文手册
查看>>
梭子鱼任命James Forbes-May为亚太区销售副总裁
查看>>
关于“大数据”的15条干货思考
查看>>
Wind River Helix系统及物联网解决方案 简化企业IOT部署
查看>>
《VMware Virtual SAN权威指南》一第1章 VSAN概述
查看>>
大数据落地决胜的关键——百分点BASIC模型
查看>>
全闪存存储时代 NVMe到底是什么?
查看>>
《数学建模:基于R》——2.2 方差分析
查看>>
大数据的发展,伴随的将是软件工程师的渐退,算法工程师的崛起
查看>>
明明是全闪存阵列,为何存储性能仍然不够快
查看>>
Cloud Foundry 登录 Azure,一键快速部署 PaaS
查看>>