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


    #re正则表达式
    import re

    #1通配符(.可匹配出换行符外的任意一个字符.ython-->qython +ython)
    #2特殊字符进行转义 Python\.org或使用原始字符r'Python.org'
    #3[]字符集 [pg]ython-->匹配python、gython [a-z]匹配a到z任意一个字符 [a-zA-Z0-9]匹配任意一个大小写字母和数字
    #4 |选择符 管道| python|jython-->匹配字符串python和jython
    #5()子模式:只选择模式的一部分() p(ython|json)-->匹配python pjson单个字符
    #6? 可选项:在子模式后加?变成可选项
    """
    r'(http://)?(www.)?python.org'
    ==>可能匹配的字符串:
    http://www.python.org
    www.python.org
    http://python.org
    python.org
    """

    """
    (param)*:允许模式重复0次或多次
    (param)+:允许模式重复1次或多次
    (param){m,n}:允许模式重复m-n次
    r'w*.python.org'==>匹配到'www.python.org' 也会匹配'.python.org',也会匹配'wwwwwwww.python.org'
    r'w+.python.org'==>匹配到'w.python.org'但不会匹配到.python.org
    r'w{3,4}.python.org'==>匹配到'www.python.org'和'wwww.python.org'
    """
    #7 字符串的开始^和结尾$
    #^脱字符标记开始 ^ht+p ==>只想在字符串的开始,而不是其他位置匹配ht+p

    #8 re match从字符串开头开始匹配
    print(re.match('w','python'))
    print(re.match('p','python'))

    #9 split
    txt = 'He.hello.....test.head.falj.kfal'
    print(re.split('[.]+',txt))
    print(re.split('[.]',txt))

    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    None
    <_sre.SRE_Match object; span=(0, 1), match='p'>
    ['He', 'hello', 'test', 'head', 'falj', 'kfal']
    ['He', 'hello', '', '', '', '', 'test', 'head', 'falj', 'kfal']
    """

    #10 最多可以分割的部分数
    txt = 'He.hello.....test.head.falj.kfal'
    print(re.split('[.]+',txt,maxsplit=2))
    print(re.split('[.]+',txt,maxsplit=1))

    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    ['He', 'hello', 'test.head.falj.kfal']
    ['He', 'hello.....test.head.falj.kfal']
    """

    #11在字符串中查找所有单词 findall以列表的形式返回
    p = '[a-zA-Z]+'
    word = "hello,world,I,am you -- hefajlka?"
    print("查找单词:",re.findall(p,word))
    q = r'[-?]'
    print("查找标点符号",re.findall(q,word))

    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    查找单词: ['hello', 'world', 'I', 'am', 'you', 'hefajlka']
    查找标点符号 ['-', '-', '?']
    """

    #12 sub 替换
    pat = '{name}'
    txt = "Hello {name}"
    print(re.sub(pat,'张三',txt))

    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    Hello 张三
    """

    #13 匹配对象和组
    'There (was a(wee) (cooper)) who (lived in fyfe)'
    """
    组0 -- There was a wee cooper who lived in fyfe
    组1 -- was a wee cooper
    组2 -- wee
    组3 -- cooper
    组4 -- lived in fyfe
    """
    "r'www.(.+).com$==>组0包含整个字符串 组1包含位于www和com之间的所有内容"
    m = re.match(r'www.(.*)..{3}','www.python.org')
    print(m.group(0),m.group(1))
    print("start:",m.start(),"end:",m.end(),"span:",m.span())
    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    www.python.org python
    start: 0 end: 14 span: (0, 14)
    """

    #14将*world*替换成<em>world<em> 1为组号
    exp_re = r'*([^*]+)*'
    print(re.sub(exp_re,r'<em>1<em>',"Hello,*world*"))
    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    Hello,<em>world<em>
    """

    #15 #compile处理正则表达式 处理效率更高 将取出的子模式放在圆括号中作为组
    # $匹配整行 ?费贪婪模式
    str = "From: Foo Fie <foo@bar.baz>"
    pat = re.compile('From:(.*)<.*?>$')
    m = pat.match(str)
    print(m.group(1))
    print(m.group(0))
    """
    C:python3.7python.exe D:/Python-Test/qiubai/qiubai/Test9.py
    Foo Fie
    """
  • 相关阅读:
    数据库字段说明查询
    MUI 微信支付代码
    数据库 批量删除表
    c# 微信开发 《内容回复或事件触发》
    C# 微信开发 《验证签名》
    SQL SERVER占用CPU过高排查和优化
    类属性验证简单说明
    地图纠偏
    区块链-6一个故事告诉你比特币的原理及运作机制
    区块链-5区块链技术入门,涉及哪些编程语言?
  • 原文地址:https://www.cnblogs.com/acer-haitao/p/7372464.html
Copyright © 2011-2022 走看看