美文网首页
正则表达式

正则表达式

作者: 部落大圣 | 来源:发表于2018-10-03 20:46 被阅读9次

    Python中的正则表达式可以用re模块访问,re模块是标准库的一部分。

    re.match() ,re.search(), re.findall()

    匹配字符串的开始部分,如果匹配返回表示匹配的对象,如果不匹配返回None。
    正则表达式的search函数返回一个对象,包含几个更详细的信息,此方法包括返回字符串匹配的组,返回第一次匹配的开始和结束位置,以及以元组形式返回第一次匹配的开始和结束位置的span函数。

    # -*- coding: utf-8 -*-
    """
    Created on Fri Aug 24 22:54:31 2018
    
    @author: 部落大圣
    """
    import re
    
    patten = r"spam"
    if re.match(patten, "sdsadadspamspamspam"):
        print("Match")
    else:
        print("No match")
    
    if re.search(patten,"efsdadsasdspam"):  # 在字符串中找到匹配
        print("Match")
    else:
        print("No Match")
    
    print(re.findall(patten, "ssdasdaspamspameggspam"))  # 返回一个包含匹配的列表
    print(re.finditer(patten, "sdasdaspamsdsdspam"))   # 返回一个迭代器而不是列表
    match = re.search(patten,"eggggsdsaspamdasd")
    print(match.group())    # 返回的匹配的元组
    print(match.start())  # 开始位置
    print(match.end())  # 结束位置
    print(match.span())  # 开始和结束位置
    
    string = "I love ###!"
    patt = r"###"
    new_string = re.sub(patt, "爱人", string)
    print(new_string)
    pattens = r"^gr.y$"
    if re.match(pattens ,"gray"):
        print("Match1")
    if re.match(pattens, "grey"):
        print("Match2")
    if re.match(pattens, "stringgray"):
        print("Match3")
    ···························
    运行结果
    
    No match
    Match
    ['spam', 'spam', 'spam']
    <callable_iterator object at 0x000001AAF423B6A0>
    spam
    9
    13
    (9, 13)
    

    查找和替换

    sub是正则表达式里非常重要的函数。表达式:

    re.sub(pattern,repl,string,max = 0)
    

    该方法在字符串替所有的匹配并把匹配用repl参数替换,除非使用max参数定义最多匹配,方法返回修改的字符串。

    import re
    string = "I love ###!"
    patt = r"###"
    new_string = re.sub(patt, "爱人", string)
    print(new_string)
    ···················
    运行结果
    I love 爱人!
    

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/icktaftx.html