在网上总是很难找到令自己比较满意的,关于正则表达式的文章。所以决定自己来总结一波,并配上相应的示例。

正则表达式:定义了规则,用来字符串处理。

用途:

1、匹配 - 符合规则的字符串,则认为匹配了。

2、提取 - 提取出符合规则的字符串。

python中通过re模块来处理正则表达式。re模块的常用方法如下:

re.match(re规则,字符串):从头开始匹配。从字符串的第一个字符开始匹配,如果第一个字符不匹配规则,那么匹配失败。

re.search(re规则,字符串):匹配包含。不要求从字符串的第一个字符就匹配。只要字符串当中有匹配该规则的,则就匹配成功。

re.findall(re规则,字符串):把所有匹配的字符放在列表中并返回。

re.sub(re规则,替换串,被替换串):匹配字符并替换。

正则表达式常用的规则如下:

下面一一示例来说明:

'.' : 是只匹配一个字符(除了\n)

  如字符串a="hello123world!!" , 那么'.'匹配到的结果为:"h" .从字符串a中搜索,搜索什么呢,符合规则'.'的数据。

1 >>> import re   #导入正则模块
2 >>> re.search('.','hello123world!!')   #使用search方法
3 <_sre.SRE_Match object; span=(0, 1), match='h'>  #匹配成功,返回了一个匹配对象。匹配的结果为:h      match=表示匹配到的结果

'^' : 匹配字符串的开头。指定字符串必须以什么开头,如果不一样,则匹配失败。

  如字符串a="hello123world!!" , 那么'^h'匹配到的结果为:"h" .如果是'^F'则匹配失败

1 >>> re.search('^h','hello123world!!')
2 <_sre.SRE_Match object; span=(0, 1), match='h'>   #匹配以h开头的字符串,匹配成功,匹配结果为:h
3 >>> re.search('^F','hello123world!!')
4 >>>                      #匹配失败,为None

re.match方法也是从字符串开头匹配。所以与^效果一样:

1 1 >>> re.match('h','hello123world!!')
2 2 <_sre.SRE_Match object; span=(0, 1), match='h'>    #匹配以h开头的字符串,匹配成功,匹配结果为:h
3 3 >>> re.match('F','hello123world!!')
4 4 >>>    #匹配失败,没有输出

'$':指定字符串以$前的字符结尾 。

1 >>> re.search('!$','hello123world!!')
2 <_sre.SRE_Match object; span=(14, 15), match='!'>  #匹配以!结尾的字符串,匹配成功,匹配结果为:!

4 >>> re.search('D$','hello123world!!')
5 >>>     #匹配以D结尾的字符串,失败

'*':表示匹配前面的字符 0次 或者 多次

'+':表示匹配前面的字符 1次 或者 多次

以上的所有匹配都只是匹配到了一个字符。那这两个匹配符则可以匹配多次。

1 >>> re.search('lll*','hello123world!!')
2 <_sre.SRE_Match object; span=(2, 4), match='ll'>  #*可以匹配到至于2个l
3
4 >>> re.search('lll+','hello123world!!')
5 >>>    # +至少要匹配三个l   所以匹配失败

如果我想要指定匹配次数呢? -----

'{m} ':指定匹配前面字符的次数。

1 >>> re.search('el{2}','hello123world!!')
2 <_sre.SRE_Match object; span=(1, 4), match='ell'>  #匹配l两次
3 >>>
4 >>> re.search('el{3}','hello123world!!')   #匹配l三次 ,匹配失败
5 >>>
6 >>> re.search('el{1}','hello123world!!')
7 <_sre.SRE_Match object; span=(1, 3), match='el'>  #匹配l一次

如果只考虑匹配 0次 或者 1次呢 ---

'?':表示匹配前面的字符 0次 或者 1次

1 >>> re.search('el?','hello123world!!')
2 <_sre.SRE_Match object; span=(1, 3), match='el'>  #?匹配l 0次或者 1次
3 >>>
4 >>> re.search('ello7?','hello123world!!')
5 <_sre.SRE_Match object; span=(1, 5), match='ello'> #? 匹配7 0次或者1次

第一波总结到这里打止。。欢迎留言和交流。


												

re模块 - 正则表达式 疏理(一)的更多相关文章

  1. Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

  2. 【Python开发】Python之re模块 —— 正则表达式操作

    Python之re模块 -- 正则表达式操作 这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式 ...

  3. sys,os,模块-正则表达式

    # *__conding:utf-8__* """"我是注释""" sys,os模块 import sysimport os pr ...

  4. Python之re模块 —— 正则表达式操作

    这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突, ...

  5. Python re模块 正则表达式

    1 简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C ...

  6. s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译

    时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...

  7. re 模块 正则表达式

    re模块(正则表达式)   一.什么是正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它 ...

  8. Python3 re模块(正则表达式)

    一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. (在Python中)它内嵌在Python中,并通过r ...

  9. re模块正则表达式

    regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...

随机推荐

  1. matlab函数int2str, num2str, str2num

    函数名:int2str 功能:将整数值转换为字符串 输入格式:str = int2str(N) 备注:就将该值四舍五入后转换为字符串,接受向量和矩阵输入. 如果是向量和矩阵输入,列数字之间会补加两个空 ...

  2. 《JavaScript设计模式与开发实践》笔记第八章 发布-订阅模式

    第八章 发布-订阅模式 发布-订阅模式描述 发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 发布-订阅模式可以广泛应用于 ...

  3. Docker版本与安装介绍

    Docker版本与安装介绍 Docker-CE 和 Docker-EE Centos 上安装 Docker-CE Ubuntu 上安装 Docker-CE Docker-CE和Docker-EE Do ...

  4. [转帖]windows10,business版和consumer版本区别

    windows10,business版和consumer版本区别 时间:2018-07-08 10:50来源:原创 作者:5分享 点击: 7113 次 windows10系统(1803)busines ...

  5. HTTP协议与TCP/IP协议

    OSI 是7层         TCP/IP 协议是 4层. OIS 包括的层 从底到上依次为 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 TCP/IP  ...

  6. list遍历时删除的坑

    1.测试代码如下: public class StrTest { public static void main(String[] args) { ArrayList<String> li ...

  7. 定时任务调度工作(学习记录 二)timer定时函数的用法

    schedule的四种用法: 1.schedule(task,time) 参数: task----所安排的任务 time----执行任务的时间 作用: 在时间等于或超过time的时候执行且仅执行一次t ...

  8. Jetson TX1 SD card启动

    上网DNS /var/run/NetworkManager/resolv.conf nameserver 211.100.225.34 nameserver 219.239.26.42

  9. Python 目录指引

    1.0 Python 基础整合 1.1 变量 1.2 数据类型 1.3 基础语法 1.4 文件操作 1.5 函数 1.6 生成器 1.7 迭代器 1.8 装饰器 1.9 字符集 2.0 Python ...

  10. MT【323】向量模的范围

    已知单位向量 $\overrightarrow e_1,\overrightarrow e_2$ 的夹角为 $120^\circ$,$\left|x\overrightarrow e_1+y\over ...