python基础篇之正则表达式

 |   

初学 Python,对 Python 的文字处理能力有很深的印象,除了 str 对象自带的一些方法外,就是正则表达式这个强大的模块了。关于 Python 里面正则表达式的使用网上有很多博文,如 python正则式学习笔记等,这里做一下自己的总结.

基本使用

  • match方法

      ```python
      import re
    
      str = 'an example word:cat!!'
      match = re.search(r'word:\w\w\w', str)
    
      # If语句紧跟来检验search()是否成功
      if match:                      
              print 'found', match.group()  ## 找到cat
      else:
              print 'did not find'
      ```
    
  • findall方法

      ```python
      import re
    
      # 在字符串中查找
      str = 'purple alice@google.com, blah monkey bob@abc.com blah dishwasher'
    
      # 找出str中所有的正规的邮箱
      emails = re.findall(r'[\w\.-]+@[\w\.-]+', str) ## ['alice@google.com', 'bob@abc.com']
      for email in emails:
              print email
    
    
      # 在文件中查找
      f = open('test.txt','r')
    
      strings = re.findall(r'pattern',f.read())
      ```
    

基本模式

  • 普通字符 a-z,A-Z,0-9
  • . 匹配任何一个单字符,除了换行符\n
  • \w 匹配字母/数字/下划线,等价于 [a-zA-Z0-9] ,\W\w互为补集
  • \b 匹配词和非词的分隔界限
  • \s 匹配单个空格字符,等价于 [ \n\r\t\f\v]. \S\s 互为补集
  • \t\n\r 匹配制表符,换行符,回车符
  • \d 匹配数字,等价于 [0-9]
  • ^ $ ^ 匹配开头, $ 匹配结尾

重复模式

  • + 匹配至少有一个和左边相同的字符构成的串.eg i+ 匹配 i/ii/iii 等

  • * 匹配 0 个或多个和左边相同的字符构成的串.eg i* 匹配 /i/ii/iii 等

  • ? 匹配 0 个或一个和左边相同的字符.eg i?匹配 /i

      > **注意:**  
      > `+`和`*`都是尽可能多的匹配字符串
    

特殊符号

  • [] 代表单个字符,这个字符是属于[]中的元素
  • () () 中匹配的字符串构成的一个 group,可以通过 match.group(i) 提取第 i 个组合

课后习题

技术茶话会
< 前一篇 后一篇 >