zoukankan      html  css  js  c++  java
  • 正则表达式

    一、正则表达式概念

      正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    二、常用的re方法

      

    #导入正则模块包
    import re
    
    #re.findall方法:在字符串中找到正则表达式所匹配的所有字符串,并返回一个列表,如果没有匹配的,则返回空列表
    #从compile()函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。
    a = '123abc445bcdi8dh8j'
    #一下两行代码也可以进行匹配,使用compile函数生成一个匹配规则对象。
    # yan = re.compile('[a-zA-z]+')
    # b = yan.findall(a)
    b= re.findall(r'[a-zA-z]+',a)
    print(b)
    ['abc', 'bcdi', 'dh', 'j']
    #re.serch方法:扫面整个字符串,匹配成功就返回一个对象,就不再往下找了。
    import re
    a = '123abc445bcdi8dh8j'
    b = re.search('bc',a)
    print(b)
    #通过group()查看匹配的内容,span()查看匹配的内容的下标
    print(b.group())
    print(b.span())
    <re.Match object; span=(0, 3), match='123'>
    None
    #re.match方法:只从开始位置的字符串进行匹配,匹配成功就返回一个匹配对象;如果不是起始字符串匹配成功,就返回为空
    import re
    a = '123abc445bcdi8dh8j'
    b = re.match('123',a)
    print(b)
    c = re.match('8dh',a)
    print(c)
    <re.Match object; span=(4, 6), match='bc'>
    bc
    (4, 6)
    #re.split分割:通过定义的分割规则进行字符串分割
    #d+:匹配数字,0—9;W+:匹配非单词向量
    import re
    str1 = 'one1two2tree3four4fine'
    str2 = 'one,two,tree,four,fine'
    str3 = re.split('d+',str1)
    str4 = re.split('W+',str2)
    print(str3)
    print(str4)
    ['one', 'two', 'tree', 'four', 'fine']
    ['one', 'two', 'tree', 'four', 'fine']
    #re.sub()替换字符串中每一个匹配的自串后返回新的字符串
    str1 = 'one1two2tree3four4fine'
    print(re.sub('d','-',str1))
    one-two-tree-four-fine
    #re.finditer:引用分组
    import re 
    str = 'hello 123,word 321'
    pattern = re.compile('w+ d+')
    #print(pattern.finditer(str))    返回一个对象
    for i in pattern.finditer(str):
    #group(0)返回一个完整的字符串内容
        print(i.group(0))
        
    pattern1 = re.compile('(w+) (d+)')
    for i in pattern1.finditer(str):
        print(i.group(0))
        print(i.group(1))
        print(i.group(2))
    hello 123
    word 321
    hello 123
    hello
    123
    word 321
    word
    321
    #匹配中文字符
    import re
    str = '帅哥 123,美女 321'
    pattern = re.compile('[u4e00-u9fa5]+')
    print(pattern.findall(str))
    ['帅哥', '美女']
    如有问题请留言,谢谢!
  • 相关阅读:
    总结:python
    Create form:class CreateWindow(Form)
    create sheets: ViewSheet.Create(doc, titleblock.Id)
    create a wall:Wall.Create(doc, line, baseLevel.Id, False)
    creat floor
    excel导入
    Vim正则通配符使用心得
    SVN仓库迁移到Git的完美解决办法
    SVN仓库迁移到Git遇到的两个问题和解决办法
    PGI Compiler for OpenACC Output Syntax Highlighting
  • 原文地址:https://www.cnblogs.com/yunsi/p/11133169.html
Copyright © 2011-2022 走看看