Python基础知识3:re正则表达式

原创 2018年01月01日 00:00:00

   

 正则表达式(或RE)是一种小型的、高度专业化的编程语言,内嵌在Python中,仅做字符的匹配。

1、字符类型:

普通字符和元字符;

1)普通字符:大多数的字符和字母都会和自身匹配,比如:

                t2=re.findall('ahh','yahhkkkgggtngslahh')  # 匹配结果['ahh', 'ahh']

2)元字符: . ^  $ * + ? {} [] |  ()   /

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

  • ^表示匹配字符串的开始,比如^hello'匹配'helloworld'而不匹配'aaaahellobbb

  • $表示匹配字符串末尾,可参考^

  • []用来匹配一个指定的字符集。

  • | 或的含义。匹配|左右表达式任意一个,从左到右匹配,如果|没有包括在()中,则它的范围是整个正则表达式 

    *重复零次或更多次

  • +重复一次或更多次

  • ?重复零次或一次

  • {n}重复n次,{n,}重复n次或更多次,{n,m}重复n到m次

  • \转义字符,后跟元字符,则表示去除特殊功能,\后跟普通字符实现特殊功能,引用序号对应的字组所匹配的字符串,主要有:   

      • \A    只在字符串开始进行匹配    

      • \Z    只在字符串结尾进行匹配    

      • \b    匹配位于开始或结尾的空字符串    

      • \B    匹配不位于开始或结尾的空字符串    

      • \d    相当于[0-9]    

      • \D    相当于[^0-9]    

      • \s    匹配任意空白字符:[\t\n\r\r\v]    

      • \S    匹配任意非空白字符:[^\t\n\r\r\v]    

      • \w    匹配任意数字和字母:[a-zA-Z0-9]    

      • \W    匹配任意非数字和字母:[^a-zA-Z0-9]

案例使用:

案例1:.匹配除换行符之外的任意字符,一个.代表一个字符,多个.代表多个字符

0?wx_fmt=png

案例2:^必须以字符串开始

0?wx_fmt=png

案例3:$匹配字符串的结束,必须以字符串结束

0?wx_fmt=png

案例4:*匹配*前一个字符0次或无限次,比如abc*,可以是ab、abc、abcc、abcccc..等

0?wx_fmt=png

案例5:+匹配+前一个字符1次或无限次

0?wx_fmt=png

案例6:?匹配前一个字符0次或1次

0?wx_fmt=png

案例7:{m}匹配前一个字符m次

0?wx_fmt=png

案例8:{m,n}匹配前一个字符m-n次,如果m省略,则指重复0-n次,如果n省略,则指重复m-无限次

0?wx_fmt=png

案例9:[...]字符集的字符以及转意

    字符集可以逐个列出,也可以给出范围如[abc]或[a-c],第一个字符如果是^,则表示取反,如[^abc]表示不是abc的其他字符。所有特殊的字符在字符集中都失去其原有的特殊含义,在字符集中,如果要使用]、-或^,可以在前面加上反斜杠,或把]、-放在第一个字符,把^放在非第一个字符r

0?wx_fmt=png

其他的转意字符:

  • \d 匹配任何十进制数:它相当于类[0-9]。

  • \D 匹配任何非数字字符:它相当于类[^0-9]

  • \s 匹配任何空白字符:它相当于类[\t\n\r\f\v]

  • \S 匹配任何非空白字符:它相当于类[^\t\n\r\f\v]

  • \w匹配任何字母数字字符,它相当于类[a-zA-Z0-9]

  • \W匹配非任何字母或数字字符,即[^\w]

  • \b 匹配一个单词边界,也就是指单词和空格间的位置,匹配\w和\W之间,比如一些特殊的字符标点,空格等。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

  • B [^\b]

案例10:\b想要匹配一个单词I,而不是单词中包含的I

0?wx_fmt=png


2、主要函数:

  • match(正则模型, 要匹配的字符串, flags=0),从起始位置开始匹配,匹配成功,则返回一个对象,未匹配成功返回None,和search区别是是否从第一个位置开始。需要配合

  • search(正则模型, 要匹配的字符串, flags=0,浏览整个字符串去匹配,直到找到一个匹配,未匹配成功返回None

  • findall(正则模型, 要匹配的字符串, flags=0) 浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表。匹配成功的字符串,不在参与下次匹配

  • split(正则模型, 要匹配的字符串, 指定分隔个数, flags=0) 根据正则匹配分割字符串,返回分割后的一个列表

  • sub(正则模型, 要替换的字符串, 要匹配的字符串, 指定匹配个数, flags=0),替换匹配成功的指定位置字符串。

  • subn(正则模型, 要替换的字符串, 要匹配的字符串, 指定匹配个数, flags=0),替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接收。

  • re.compile(pattern[, flags]):把正则表达式语法转化成正则表达式对象。flags定义包括:
    re.I:忽略大小写
    re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
    re.M:多行模式
    re.S:’ . ’并且包括换行符在内的任意字符(注意:’ . ’不包括换行符)
    re.U: 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

group,分组是去已经获取的东西里面再去匹配

  • group() 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来,有参取匹配到的第几个如2

  • groups()  获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果

  • groupdict() 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果


案例11:match和group效果

0?wx_fmt=png

案例12,groups的效果,一旦表达式有()就是分组

0?wx_fmt=png

案例13,groupdict的效果

0?wx_fmt=png

案例14,findall+分组

0?wx_fmt=png

案例15,split+分组

0?wx_fmt=png

案例16:替换sub

0?wx_fmt=png

图片来源网址:https://www.jianshu.com/p/df2e26c5b2b5


程序链接:https://pan.baidu.com/s/1nuDdaGh 密码:dvzj

版权声明:本文为博主原创文章,未经博主允许不得转载。

python爬虫入门(1) 基础知识 ; 正则表达式 Re 模块

一、python 基础知识复习 我将列出与c++不同的一些基础知识 List (c++中的数组,也可以说是vector因为他可以自由伸缩长度,Java和C#中也有list) 构造 li...
  • qq_36336522
  • qq_36336522
  • 2017年08月05日 23:04
  • 410

python基础之 re(正则表达式)模块学习

re.matchre.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。import re text = "JGood is a handsome boy, he i...
  • qq_41262248
  • qq_41262248
  • 2018年02月12日 11:36
  • 31

Python基础知识:re正则表达式

正则表达式(或RE)是一种小型的、高度专业化的编程语言,内嵌在Python中,仅做字符的匹配。1、字符类型:普通字符和元字符;1)普通字符:大多数的字符和字母都会和自身匹配,比如:          ...
  • weixin_41044523
  • weixin_41044523
  • 2018年02月09日 10:23
  • 12

python爬虫之re正则表达式库

python之正则表达式re库正则表达式是用来简洁表达一组字符串的表达式,编译:将符合正则表达式语法的字符串转换成正则表达式特征操作符 说明 实...
  • qq_22186119
  • qq_22186119
  • 2017年06月14日 21:20
  • 618

RE正则表达式

http://www.cnblogs.com/mchina/archive/2012/06/29/2570018.html 一.    特殊文件: /dev/null和/dev/tty  ...
  • lqglqglqg
  • lqglqglqg
  • 2015年04月17日 09:23
  • 252

Python基础知识3:re正则表达式

正则表达式(或RE)是一种小型的、高度专业化的编程语言,内嵌在Python中,仅做字符的匹配。1、字符类型:普通字符和元字符;1)普通字符:大多数的字符和字母都会和自身匹配,比如:          ...
  • PbGc396Dwxjb77F2je
  • PbGc396Dwxjb77F2je
  • 2018年01月01日 00:00
  • 1492

python3 正则匹配 re.split,re.finditer,re.findall 方法

re.split re.finditer re.findall@(python3)官方 re 模块说明文档re.compile() 函数 编译正则表达式模式,返回一个对象。可以把常用的正则表达式编...
  • CityzenOldwang
  • CityzenOldwang
  • 2017年10月30日 22:51
  • 649

python之re模块通过正则表达式实现截取

python之re模块通过正则表达式实现截取     先说一下需求:就是通过Python模块(import re)实现对某段字符串语句进行获取想要的信息,比如数字,邮件或者电话号码等   ...
  • laozhuxinlu
  • laozhuxinlu
  • 2017年04月20日 19:02
  • 2241

Python基础知识3:re正则表达式

 正则表达式(或RE)是一种小型的、高度专业化的编程语言,内嵌在Python中,仅做字符的匹配。1、字符类型:普通字符和元字符;1)普通字符:大多数的字符和字母都会和自身匹配,比如:         ...
  • u013077984
  • u013077984
  • 2018年02月14日 08:46
  • 14

正则表达式RE的两种调用

Python正则两种用法:     一种是通过生成对象,然后对象调用方法来完成 import re >>> p = re.compile('[a-z]+') >>> p >>> p.ma...
  • smart55427
  • smart55427
  • 2014年10月23日 20:13
  • 314
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python基础知识3:re正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)