Python基础之re模块

Posted hxdedu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础之re模块相关的知识,希望对你有一定的参考价值。

什么是模块?

  为了编写可维护的代码,我们把很多的函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在Python中,一个.py文件就称为一个模块

模块的作用?

  使用模块的好处 大大提高了代码的可维护性 其次 编写代码不必从零开始 当一个模块编写完毕 就可以被其他地方引用 我们在编写程序的时候,也就经常使用其他模块 包括Python内置的模块和来自第三方的模块; 另外使用模块可以避免函数名和变量名冲突。

 

re模块

  re模块是python标准库(Python中已经定义好的)里面的一个模块,主要用于模糊查询,应用方面为WEB 、爬虫等; re 模块 就其本质而言,正则表达式(或re)是一种小型的,高度专业的编程语言,(在Python中) 它内嵌在Python中,并通过re模块实现,正则表达式模式被编译成一系列的字节码,然后由 C编写的匹配引擎执行。

  re模块使用元字符去匹配数据,元字符包括:

    .  通配符(可以匹配任意类型的数据)

    ^ 从开头开始匹配

    $ 结尾符 (返回以指定内容结尾的数据)

    * 匹配(0,+00)次

    + 匹配(1,+00)次

    ? 匹配(0,1)次

    {} 可以代替之前的三种情况 {0,}== * {1,}==+ {0,1}==?  {6}匹配重复6次

    [a-z]  表示范围 re.findall(‘q[a-z]‘, ‘quojqkjhk‘) re.findall(‘q[a-z]*‘, ‘quojqkjhk‘) 匹配多次 re.findall(‘q[^a-z]*‘, ‘quojqkjhk‘) 匹配不是以q开头后面是字母的数据

     [xyz] 字符集 匹配字符集中的任何一个字符

      去掉转义 使元字符失去特殊功能

    () 分组 将()之间的内容定义为组,并且将匹配这个字符的表达式暂存在一个临时区域

     | 表示或运算

 

  反斜杠后边跟普通字符实现特功能:

      d   匹配十进制数 它相当于类[0-9] 将每个数字分成单个方式展示 d+ 可以展示十位数或者百位数
    D     匹配任何非数字字符 它相当于类[^0-9]
    s   匹配任何空白字符 它相当于类[+ fv]
    S   匹配任何非空白字符 它相当于类[^+ fv]
    w     匹配任何字母数字字符 它相当于类[a-zA-Z0-9_]
    W  匹配任何非字母数字字符 它相当于类[^a-z A-Z 0-9_]
       匹配一个特殊字符边界 比如空格 & #等

       r 或者 \ 去掉特殊意义

  分组

 

    re.search("(?P<name>[a-z]+)(?P<age>d+)", "alex36wusir34xialv33").gruop(‘name‘)

 

   re模块使用的函数:

      

    findall() 把返回的结果放在列表中
   search() 函数在字符串内查找模式匹配 只找到第一个匹配然后返回一个对象
   search.gruop() 通过调用group()方法得到匹配的字符串 如果字符串没有匹配则返回空
   match() 匹配成功就返回一个对象 不成功就什么都不返回 与search 不同的是它只在开始位置进行匹配
   spilt() 按照指定的字符将带匹配对象进行分割 被分割的位置用空白代替
   sub() 用指定的字符去替换带替换的对象
      re.sub(‘d+‘,‘A‘,‘jadsk56469adsdfsdf35464‘)

      re.sub(‘d‘,‘A‘,‘jadsk56469adsdfsdf35464‘)

      re.sub(‘d‘,‘A‘,‘jadsk56469adsdfsdf35464‘, 5)

      re.subn(‘d‘, ‘A‘, ‘jafdsf2313asfdsd5534‘) 返回替换的结果和替换的次数

   compile() re.compile(‘‘) 编译想要匹配的规则 com=compile(‘d+‘) com.findal(‘asdfds23asdf‘) 这样做可以使用多次


   finditer() 将返回结果存在迭代器中 使用的时候 next = re.finditer(‘d‘,‘asfdds231dsfs‘) next(ret).group()    

   去优先级 re.findall(‘www.(?:baidu|163).com‘, ‘afsdfdsf.163.comsdafsdf‘)  

 
















以上是关于Python基础之re模块的主要内容,如果未能解决你的问题,请参考以下文章

python基础之re模块

Python基础之re模块

Python基础(13)_python模块之re模块(正则表达式)

Python基础之re模块(正则表达式)

python基础之正则表达式和re模块

python之基础篇——正则表达式RE模块