栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python内置模块【re正则表达式】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python内置模块【re正则表达式】

python内置模块【re正则表达式】

一大堆文本中提取其中指定的数据,用正则表达式

1.字符串相关
  • 'wxy’匹配文本中的wxy

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.findall('wxy',text)
    print(data_list) #['wxy', 'wxy']
    
  • [abc],匹配文本中的a或b或c字符

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.findall('[abc]',text)
    print(data_list) #['a', 'a']
    
  • [^abc],匹配处理abc以外的字符

    import re
    text='你好,angle'
    data_list=re.findall('[^abc]',text)
    print(data_list) #['你', '好', ',', 'n', 'g', 'l', 'e']
    
  • [a-z],匹配a-z任意字符

    import re
    text='你好,angle'
    data_list=re.findall('[a-z]',text)
    print(data_list) #['a', 'n', 'g', 'l', 'e']
    
  • . ,代指除换行符以外的任意字符

    import re
    text='你好,angle,an'
    data_list=re.findall('a.',text)
    print(data_list)# ['an']
    
  • w,代指字母或数字或下划线(汉字)

    import re
    text='你好,a_n_g_le'
    data_list=re.findall('w',text)
    print(data_list) #['你', '好', 'a', '_', 'n', '_', 'g', '_', 'l', 'e']
    
  • d,代指数字

    import re
    text='你好,2698959795用户'
    data_list=re.findall('d',text)
    print(data_list) #['2', '6', '9', '8', '9', '5', '9', '7', '9', '5']
    
  • s,代指任意空白符,空格等

    import re
    text='你好t,26989用户n'
    data_list=re.findall('s',text)
    print(data_list) #['t', 'n']
    
2.数量相关
  • *,重复0次或多次

    import re
    text='你好,我叫wxy,你可以叫我wy'
    data_list=re.findall('wx*y',text)
    print(data_list) #['wxy', 'wy']
    
  • +,重复一次或多次

    import re
    text='你好,我叫wxy,你可以叫我wy'
    data_list=re.findall('wx+y',text)
    print(data_list) #['wxy']
    
  • ?,重复0或1次

    import re
    text='你好,我叫wxy,你可以叫我wy或wxxxy'
    data_list=re.findall('wx?y',text)
    print(data_list) #['wxy', 'wy']
    
  • {n},重复n次

    import re
    text='2698959795'
    data_list=re.findall('26989d{5}',text)
    print(data_list) #['2698959795']
    
  • {n,},至少重复n次

    import re
    text='2698959795'
    data_list=re.findall('26989d{1,}',text)
    print(data_list) #['2698959795']
    
  • {n,m},重复n到m次

    import re
    text='2698959795'
    data_list=re.findall('26989d{1,3}',text)
    print(data_list) #['26989597']
    
3.括号(分组)
  • 提取数据区域

    import re
    text='2698959795@qq.com'
    data_list=re.findall('(26989d+)@qq.com',text)
    print(data_list) #['2698959795']
    
  • 获取指定区域+或条件

    import re
    text='2698959795@qq.com,26989612@qq.com'
    data_list=re.findall('((269895d+|6d+)@qq.com)',text)
    print(data_list) #[('2698959795@qq.com', '2698959795'), ('6989612@qq.com', '6989612')]
    
4.re模块
  • findall,获取匹配的所有数据

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.findall('wxy',text)
    print(data_list) #['wxy', 'wxy']
    
  • match,从起始开始匹配,匹配成功返回一个对象,未匹配成功返回None

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.match('你好',text)
    print(data_list) #
    print(data_list.group()) #你好
    
  • search,浏览整个字符串去匹配第一个,未匹配成功返回None

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.search('wxy',text)
    print(data_list) #
    print(data_list.group()) #wxy
    
  • sub,替换匹配成功的位置

    import re
    text='你好,我叫wxy,你可以叫我wxy或者angle'
    data_list=re.sub('wxy','小红',text)
    data_list1=re.sub('wxy','小红',text,1)
    print(data_list) #你好,我叫小红,你可以叫我小红或者angle
    print(data_list1) #你好,我叫小红,你可以叫我wxy或者angle
    
  • split,根据匹配成功的位置分割

    import re
    text='你好,我叫wxy,你可以叫我wxy或者angle'
    data_list=re.split('wxy',text)
    data_list1=re.split('wxy',text,1)
    print(data_list) #['你好,我叫', ',你可以叫我', '或者angle']
    print(data_list1) #['你好,我叫', ',你可以叫我wxy或者angle']
    
  • finditer

    import re
    text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle'
    data_list=re.finditer('wxy',text)
    for i in data_list:
    	print(i,i.group()) 
        
    #  wxy
    #  wxy
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号