正则表达式

Posted nuochengze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

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

 

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

  (1)寻找规律;

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

  (3)提取信息

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

  1.1 点号“.”

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

  1.2 星号“*”

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

  1.3 问号“?”

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

  1.4 反斜杠“”

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

  1.5 转义字符表

转移字符 意义
换行符
制表符
\ 普通反斜杠
单引号
" 双引号
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括号内和括号外

  

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

PHP 正则表达式总结

正则表达式

正则表达式

正则表达式“或“的使用

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

JS正则表达式详解