正则表达式

  • 原子
    • 普通字符
import re
pattern="yue"
string="http://yum.iqianyue.com"
result1=re.search(pattern,string)
print(result1)
    • 非打印字符  
      • \n  \t
    • 通用字符作为原子
      • \w     匹配任意一个字母,数字或者下划线
      • \W    匹配除字母、数字和下划线以外的一个任意字符
      • \d      匹配任意一个十进制数
      • \D     匹配除十进制数以外的任意一个其他字符
      • \s      匹配任意一个空白字符
      • \S     匹配除空白字符以外的任意一个其他字符

  

import python       
pattern="\w\dpython\w"
string="abcdfphp345pythony_py"
result1=re.search(pattern,string)
print(result)
    • 原子表  [xyz] 这个原子表中定义了3个原子,这3个原子的地位平等
  •  元字符
    • 任意匹配元字符
    • 边界限制元字符
    • 限定符
    • 模式选择符
    • 模式单元符
  • 模式修正   在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义。
    •    匹配时忽略大小写  I
    •    多行匹配       M
    • 做本地化识别匹配       L
    • 根据Unicode字符及解析字符       U
    • 让.匹配包括换行符,即用了该模式修正后,"."匹配就可以匹配任意的字符了
      • import re
        pattern1="python"
        pattern2="python"
        string=''abcdfphp345Pythony_py"
        result1=re.search(pattern1,string)
        result2=re.search(pattern2,string,re.I)
        print(result1)
        print(result2)
        
        
        结果
        None
        <_sre.SRE_Match object; span=(11,17),match="Python">
  • 贪婪模式与懒惰模式
    • 贪婪模式的核心点就会尽可能多的匹配,懒惰模式的核心点就是尽可能少地匹配
    • 像“”p.*y“” 贪婪模式    .*?懒惰模式
  • 正则表达式常见函数
    • re.match()
      •  如果想从元字符串的起始位置匹配一个模式,可以使用re.match()
        • 格式 re.match(pattern,string,flag)
      • match的一些方法

1.string是匹配时所用的文本 
2.start可以返回指定的组在字符串中开始匹配的位置,默认值为0 
3.end返回指定的组在字符串中开始匹配的位置,默认值为0 
4.pos,endpos用于返回起始和终止匹配位置 
5.group可以返回指定组的起始匹配位置 
6.groupdict返回有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。 
7.lastgroup返回最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。 
8.lastindex返回最后一个分组在文本中的索引 
9.span 返回(start(group), end(group)),即该组的起始和终止位置 
10.expand可以实现分组之间顺序的调整

    • re.search()函数
      •  扫描整个字符串并进行相应的匹配,re.match()函数最大的不同是,re.match()函数从源字符串的开头进行匹配, 而re.search()函数会在全文中进行检索并匹配
    • 全局匹配函数
      •    用re.compile()对正则表达式进行预编译
      • 编译后,使用findall()根据正则表达式从源字符串中将匹配的结果全部找出
    • re.sub()函数
      • 根据正则表达式来实现替换某些字符串的功能。
      • 格式:re.sub(pattern,rep,string,max)     第一个参数为对应的正则表达式,第二个参数为要替换成的字符串,第三个参数为原字符串,第四个参数为可选项。
  • 实例解析
    • 匹配.com或.cn后缀的url网址
      • import re
        pattern="[a-zA-Z]+://[^\s]*[.com|.cn]"
        string="<a href='http://www.baidu.com'>百度首页</a>"
        result=re.search(pattern,string)
        print(result)
        
    • 匹配电话号码
      •  
        import re
        pattern="\d{4}-\d{7}|\d{3}-\d{8}"
        string="021-672313231232132"
        result=re.search(pattern,string)
        print(result)
        

          

          

  

 

posted @ 2018-01-09 17:24  一只宅男的自我修养  阅读(125)  评论(0编辑  收藏  举报