正则表达式

…衆ロ難τιáo~ 提交于 2020-02-09 14:45:37

描述:正则表达式能够从一段文本中提取有用的信息。

 

0、使用正则表达式有如下步骤:

  (1)寻找规律;

  (2)使用正则符号表示规律

  (3)提取信息

1、正则表达式的基本符号

  1.1 点号“.”

    一个点号可以代替除了换行符以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号。

  1.2 星号“*”

    一个星号可以表示它前面的一个子表达式(普通字符、另一个或几个正则表达式符号)0次到无限次。

  1.3 问号“?”

    问号表示它前面的子表达式0次或者1次。

  1.4 反斜杠“\”

    配合使用把特殊字符变成普通符号,把普通符号变成特殊字符。

  1.5 转义字符表

转移字符 意义
\n 换行符
\t 制表符
\\ 普通反斜杠
\' 单引号
\" 双引号
\d 数字

  1.6 小括号

    小括号可以把括号里面的内容提取出来。

2、在python中使用正则表达式

  2.1 python自带的正则表达式模块re(regular expression)

    2.1.1 导入re

     1 import re 

    2.1.2 findall

      findall()方法,它能够以列表的形式返回所有满足要求的字符串

      findall()的函数模型为:

       1 re.findall(pattern, string, flags=0) #pattern表示正则表达式, string表示原来的字符串, flags表示一些特殊功能的标签 

      提示:(1)如果包含多个(.*?)返回的仍然是一个列表,但是列表里面的元素变成了元组。

         (2)flags参数可以省略,不省略时具有一些辅助功能,如要忽略换行符,就需要使用re.S这个flag。

    2.1.3 search 

      search()方法,只会返回第1个满足要求的字符串,一旦找到符合要求的内容,它就会停止查找。

      search()的函数模型为:

       1 re.search(pattern, string, flags=0) 

      提示:(1)如果需要得到匹配到的结果,则需要通过group()这个方法来获取里面的值

         (2)只有在.group()里面的参数为1的时候,才会把正则表达式里面的括号中的结果打印出来。

         (3).group()的参数最大不能超过正则表达式里面括号的个数。   

    2.1.4 “.*”和“.*?”的区别

      “.*”表示匹配一个能满足要求的最长字符串

      “.*?”表示匹配一个能满足要求的最短字符串     

3、正则表达式提取技巧

  3.1 不需要compile

  3.2 先抓大再抓小

    先抓大再抓小的思想会贯穿整个爬虫开发过程。

  3.3括号内和括号外

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!