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

python内置模块【re正则表达式】,第1张

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,a\n'
    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('26989\d{5}',text)
    print(data_list) #['2698959795']
    
  • {n,},至少重复n次

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

    import re
    text='2698959795'
    data_list=re.findall('26989\d{1,3}',text)
    print(data_list) #['26989597']
    
3.括号(分组) 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
    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/789618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存