python正则表达式简要

python 中使用正则表达式

  • re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
import re
x= re.search('oob', 'www.runoob.com') #返回的是个一个元组,匹配下标索引
#如果re.search没有匹配上,则span函数会报错,需要先使用if条件判断一下是否是None对象
if x is not None:
    y=x.group(0)
else:
    y="NA"
y
#y="www"[x.span()[0]:x.span()[1]]
'oob'
#python中正则表达式使用group来分组
line = "Cats are smarter than dogs"
 
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   y1=matchObj.group()
   y2=matchObj.group(1)
   y3=matchObj.group(2)
else:
   y1="No match!!"
[y1,y2,y3]
['Cats are smarter than dogs', 'Cats', 'smarter']
if (re.match(r'w{3}', 'www.runoob.com')):
    x="yes"
else:
    x="no"
x
#re.match 和 re.search第一个参数为正则表达式,第二个为需要匹配的文本,返回值的类型为逻辑类型
#match只能匹配从头开始
'yes'
if (re.search(r'abc', 'www.runoob.com')):
    x="yes"
else:
    x="no"
x
'no'
  • 使用findall函数
text = "foo    bar\t baz  \tquxfo"
re.split('\s+', text)
re.findall(pattern=r"fo{1,2}",string=text)
#findall返回的是一个列表数组,找出所有的匹配项
['foo', 'fo']
  • 检索和替换,使用re.sub函数
phone = "2004-959-559 # 这是一个国外电话号码"
 
# 删除字符串中的 Python注释 
num1 = re.sub(r'#.*$', "", phone)#第一个参数为pattern正则,第二个参数为需要替换的字符,第三个参数为text文本
 
# 删除非数字(-)的字符串 
num2 = re.sub(r'\D', "", phone)

num1,num2
('2004-959-559 ', '2004959559')

import re
x=star
def replace(n):
    if n is not None:
        return re.sub(string=n,pattern="演: ",repl="")
 
x=map(replace,x)    
for i in x:
    print(i)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • re模块手册 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以...
    喜欢吃栗子阅读 4,243评论 0 13
  • 本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例...
    Python程序媛阅读 1,504评论 0 22
  • 一梦三四年 一个人,到了20岁还不狂,这个人是没出息的;到了30岁还狂,也是没出息的 看到...
    只当如此阅读 345评论 0 0
  • 1、iOS 开发流程笔记:https://github.com/leecade/ios-dev-flow 2、iO...
    walter0817阅读 248评论 0 0
  • 秋高气爽,碧沙岗公园走起! 看到9路,宁宁很激动,高~高~地大叫,双层巴士,很醒目。 ...
    yishi阳光阅读 292评论 0 0

友情链接更多精彩内容