Python 爬虫 - 正则表达式

 

“正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式一般被用来检索、替换那些符合某个模式(规则)的文本。html

许多程序设计语言都支持利用正则表达式进行字符串操做。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式一般缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。”
 
 
以下分享两个正则表达式相关有用的网站:
 
下面收集和整理了一些重点:
 
a. 经常使用的元字符

代码正则表达式

说明json

.函数

匹配除换行符之外的任意字符工具

\w测试

匹配字母或数字或下划线网站

\sspa

匹配任意的空白符设计

\dregexp

匹配数字

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束


 


 

 

 

 

 

 

 

 

 

 

 

 

  • 经常使用反义词

代码/语法

说明

\W

匹配任意不是字母,数字,下划线,汉字的字符

\S

匹配任意不是空白符的字符

\D

匹配任意非数字的字符

\B

匹配不是单词开头或结束的位置

[^x]

匹配除了x之外的任意字符

[^aeiou]

匹配除了aeiou这几个字母之外的任意字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 经常使用限定符

代码/语法

说明

*

重复零次或更屡次

+

重复一次或更屡次

?

重复零次或一次

{n}

重复n次

{n,}

重复n次或更屡次

{n,m}

重复n到m次

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 b. 原子 (非打印字符/通用字符)

原子是正则表达式的最基本的组成单位,并且在每一个模式中最少包含一个原子。原子是由全部那些未显示指定为元字符的打印和非打印字符组成,因此在这里将其详细划分为五类进行介绍。

   ①普通字符做为原子

  普通字符是编写正则表达式时最多见的原子了,包括全部的大写和小写字母字符、全部数字等。例如,a——z、A——Z、0——9。

   ②一些特殊字符和元字符做为原子

  任何一个符号均可以做为原子使用,但若是这个符号在正则表达式中有一些特殊意义,咱们就必须使用转义字符“\”取消它的特殊意义,将其变成一个普通的原子。例如,全部标点符号以及一些其余符号,双引号“””、单引号“’”、“*”、“+”、“.”等,若是当原子就必须像\”、\’、\+和\.这样使用。

   ③一些非打印字符做为原子

  所谓的非打印字符,是一些在字符串中的格式控制符号,例如空格、回车及制表符号等。例以下表所示列出了正则表达式中经常使用的非打印字符及其含义。

元字符(经常使用的元字符)

        ④使用“通用字符类型”做为原子

前面介绍的无论是打印字符仍是非打印字符做为原子,都是一个原子只能匹配一个字符。而有时咱们须要一个原子能够匹配一类字符,例如,匹配全部数字不是一个数字,匹配全部字母而不是一个字母,这时就要使用“通用字符类型”了。例以下表所示列出了正则表达式中经常使用“通用字符类型”及其含义。

        ⑤自定义原子表([])做为原子

 

 

c.模式修正符(经常使用的模式修正符)

模式修正符就是几个字母,咱们在每一个正则表达式中能够一次使用一个,也能够连续使用多个,每个具必定的意义。对整个正则表达式调优使用,也能够说是对正则表达式功能的扩展。经常使用模式修正符有:

 

  1. i  - 正则内容在匹配时候不区分大小写(默认是区分的)
  2. m - 在匹配首内容或者尾内容时候采用多行识别匹配
  3. s - 将转义回车/n取消是为单行匹配如.
  4. x - 忽略正则中的空白
  5. A - 强制从头开始匹配
  6. D - 强制$匹配尾部无任何内容包括/n
  7. U - 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,经常使用在采集程序上的正则表达式

 

d.贪婪模式与懒惰模式

正则表达式,表示重复字符,操做符,默认都是贪婪模式,'?,+,*,{}' 默认都会选择贪婪模式,会最大长度匹配字符串(量词默认首先最大匹配字符串,这些量词有:+,*,?,{m,n} 。一开始匹配,就直接匹配到最长字符串)。要切换到懒惰模式(懒惰模式),就只是在该元字符,后面加多一个”?” 便可切换到非贪婪模式(尽量少地匹配所搜索的字符串)。

 

e.Python中经常使用的函数

  • compile()
  • match()
  • search()
  • split()
  • sub()
  • findall()
相关文章
相关标签/搜索