python爬虫正则表达式

1、正则表达式概念:用来简洁表达字符串的方式。(regular expression     regex     RE)

           通用的字符串框架

           针对字符串表达“简洁”和“特征”思想的工具。

2、正则表达式的语法:

  2.1、“.”  :表示任何单个字符

  2.2、“[]”  :字符集,对单个字符给出取值范围

         [abc]表示a、b、c,[a-z]表示a到z单个字符

  2.3、“[^]”  :非字符集

        [^abc]表示不是a,b,c,的单个字符

  2.4、“*”  :前一个字符的0次或无限次扩展

  2.5、“+”  :前一个字符1次或无限次扩展

  2.6、“?”  :前一个字符的0次或1次扩展

  2.7、“|”  :或,左右表达式任意一个

        abc|def 表示abc或def

  2.8、“{m}”  :扩展前一个字符m次

  2.9、“{m,n}”  :扩展前一个字符m至n次(含n)

  2.10、“^”  :匹配字符串开头

        ^abc 表示abc开头字符串

  2.11、“$”  :匹配字符串结尾

        abc$ 表示abc结尾字符串

  2.12、“()”  :分组标记,内部智能使用“|”操作符

  2.13、“d”  :数字,等价于[0-9]

  2.14、“w”  :单词字符,等价于[A-Za-z0-9_]

      

     eg:^[A-Za-z]+$ :表示由26个字母组成的字符串

      :^[A-Za-z0-9]+$:表示由26个字母和数字组成的字符串

      :^-?d+$:整数形式的字符串     #“-”扩展0次或一次,表示正负

      :^[0-9]*[1-9][0-9]*$:表示正整数形式的字符串

      :[1-9]d{5}:中国境内邮政编码,6位

      :[u4e00-u9fa5]:匹配中文字符

3、re库的使用

  3.1、表示类型

    3.1.1、raw string类型(原生字符串类型)表示正则表达式,表示为:r'text'

        r'[1-9]d{5}'

        r'd{3}-d{8}|d{4}-d{7}'

        原生字符串是不包含转义字符,“”不被解释为转义符

    3.1.2、string类型,

       '[1-9]\d{5}'

       '\d{3}-\d{8}|\d{4}-\d{7}'

       “”解释为转义字符,得添加“”以示区别

  3.2、re库的主要函数

    3.2.1、re.search()  :在一个字符串中搜索匹配正则表达式的第一位置,返回match对象。

       函数原型:re.search(pattern,string,flag=0)

         pattern:正则表达式的字符串或原生字符串表示

         string:要匹配的字符串

         flag:正则表达式使用时的控制标记

          re.I  re.IGNORECASE  :忽略大小写区分

          re.M  re.MULTILINE   :作用于正则表达式中的“^”操作符能够将给定字符串的每行当作匹配开始

          re.S  re.DOTALL      :作用于正则表达式中的“.”操作符能够匹配所有字符,默认匹配除换行符外的所有字符

    3.2.2、re.match()  :从一个字符串的开始位置起匹配正则表达式,返回match对象。

       函数原型:re.match(pattern,string,flag=0)

    3.2.3、re.findall()  :搜索字符串,以列表类型返回全部能匹配的子串。

       函数原型:re.findall(pattern,string,flag=0)

    3.2.4、re.split()  :将一个字符串按照正则表达式匹配结果进行分割,返回列表类型。

       函数原型:re.split(pattern,string,maxsplit,flag=0)

         maxsplit  :最大分割数

    3.2.5、re.finditer()  :搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象。

       函数原型:re.finditer(pattern,string,flag=0)

    3.2.6、re.sub()  :在一个字符串中替换匹配正则表达式的子串,返回替代后的字符串。

       函数原型:re.sub(pattern,repl,string,count=0,flags=0)

         repl  :替换的字符串

         count  :替换的次数

4、re库的等价用法

  4.1、函数式用法:一次性操作

    >>rst=re.search(r'[1-9]d{5}','BIT 100081')  

  4.2、面向对象用法:编译后的多次操作

    >>pat=re.compile(r'[1-9]d{5}')

    >>rst=pat.search('BIT 100081')

      好处:一次编译,多次函数执行,可加快程序执行

      方法与re的基本方法对应

原文地址:https://www.cnblogs.com/oldhuang/p/10341269.html