Python---正则表达式汇总

一、正则表达式概述

  1. 正则表达式使用单个字符串描述匹配符合某个规则的字符串
  2. 它是对字符串操作的一种逻辑公式
  3. 它的应用场景:处理文本和数据
  4. 匹配过程:依次拿出表达式和文本中字符比较,如果每个字符串都能匹配,则成功

二、re模块

讲到Python的正则表达式就不能不提到re模块,引用re模块的方法也非常简单,直接import re 即可。

使用re模块匹配曾则表达式的流程

  1. 生成pattern对象:调用re.compile(…)函数,只能通过这个才能生成pattern对象。
  2. 进行匹配:pattern.match(…)函数,将pattern对象与具体的字符串进行匹配。
  3. 得出结果。
    注:在第一步编写正则表达式的时候,通常习惯在正则表达式之前加一个r,例如:re.complie(r’\d+’),其中这个r表示原生字符串的意思,表示不转义,即‘\‘就是代表‘\‘。

三、符号集介绍

  • .:匹配任意一个字符(除了\n)
  • […]:匹配字符集
  • \d / \D :匹配数字 / 非数字
  • \s / \S :匹配空白 / 非空白字符
  • \w / \W :匹配单词字符[a-zA-Z0-9] / 非单词字符
  • ?:匹配前一个字符集0次或者1次
  • {m} / {m,n} :匹配前一个字符集m次 / m到n次
  • ? / +? / ??:非贪婪模式,尽可能少地匹配子字符,举个例子:现有字符串1bc,正则表达式为[0-9][a-z]?时:只能匹配1,[a-z]最少为0个;正则表达式为[0-9][a-z]+?时:能匹配到1b,此时[a-z]中最少能匹配到1个;当为第三种情况[0-9][a-z]??时:最多匹配到1。
  • 下面为边界字符集:1、^:匹配字符串的开头。2、 $:匹配结尾。3、\A / \Z :指定字符串必须出现在开头或者结尾。例如:[1-9]?\d|100表示0-100的所有数字,包括边界。

四、分组匹配

  1. |:匹配左右任意一个表达式(类似于或)。
    eg:0-100表示为 [1-9]?\d$|100
    2.(ab):括号中表达式作为一个分组
    eg:[\w]{4,6}@(163|126).com:匹配163或者126
    3.\<>:匹配标记语言,举个例子
    eg:’<([\w]+>)[\w]《/ \1’其可以匹配出Python,其中 \1:可以简单理解成匹配分组内容([\w]+>):即’Book>’匹配到()里面包含的东西
    4.(?P):给分组起一个别名
    5.(?P:):匹配名为name的分组对应的字符串

五、re的方法

1.search(pattern ,String ,flags = 0):在一个字符串中查找匹配指定的字符串与find类似(固定特定字符串)
eg:Str1 = ‘imooc vedionum = 1000’ ; info = re.search(r’\d+’,Str1)
2.findall(pattern ,String ,flags = 0):找到匹配,返回所有匹配部分的列表,与find方法不同。
3.sub(pattern ,repl ,String ,count = 0 , flags = 0):将字符串匹配正则表达式的部分替换为其他值。其中repl:既可以是字符串,也可以是函数名(返回值为字符串)。就第二种情况举个例子
eg:def add1(match):
val = match.group()
num = int(val) + 1
return str(num)
4.split(pattern ,String ,maxsplit = 0 ,flags = 0):根据匹配分割字符串,返回分割字符串组成的列表。

你可能感兴趣的:(python,爬虫)