正则表达式

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

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括号内和括号外

相关推荐