http://www.cnblogs.com/Eva-J/articles/7228075.html  所有常用模块的用法

正则的规则:

在一个字符组里面枚举合法的所有字符,字符组里面的任意一个字符和‘带匹配字符’都相同,都视为可以匹配。

#
#是数字
#11位
#以13|15|17|18|16|14
# num = input('phone_number : ')
# if num.isdigit() and len(num) == 11 and num.startswith('13') or \
# num.startswith('14') or \
# num.startswith('15') or \
# num.startswith('17') or \
# num.startswith('18'):
# print('是一个格式正确的电话号码') # import re
# phone_number = input('please input your phone number : ')
# if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
# print('是合法的手机号码')
# else:
# print('不是合法的手机号码') #100万
#找到所有的电话号码 #正则 —— 通用的,处理 字符串
#正则表达式
#正则 是一种 处理文字 的 规则
#给我们提供一些规则,让我们从杂乱无章的文字中提取有效信息 #模块
#它只是我们使用python去操作一些问题的工具而已,和要操作的这个东西本身是两件事情 #re模块 —— python使用正则
#正则规则
#需要记忆的特别多:两大类 #[字符组]
#表示在一个字符的位置可以出现的所有情况的集合就是一个字符组 #表示数字的字符组:
#[13456782]
#[0123456789]
#[0-9]
#[2-8]
#简写模式必须由小到大 #表示字母的字符组
#[abcd]
#[a-z]
#[A-Z] #表示匹配任意字符 : [\w\W][\d\D][\S\s] #正则匹配:字符 量词 非贪婪标志
# 字符:字符、字符组、元字符 表示一个字符位置上可以出现的内容 #身份证号
# 15:首位不能为零,数字组成
# 18:首位不能为零,前17位是数字,最后一位可以是数字或者x # print('\\\\n')
# print('\\n') #r('\n') #r'\\n' --> r'\n'
#在在线工具中能执行,放到Python的字符串中,表示成r''就可以正常的执行了

re模块:

import re
# ret = re.findall(r'\d', r'eva7 egon yuan') # 返回所有满足匹配条件的结果,放在列表里,返回结果一定是一个列表
# print(ret) #结果 : ['a', 'a'] # ret = re.search('a', 'eva egon yuan')
# if ret:
# print(ret.group()) # 这里返回的值只有一个a”
#search从左到右依次找,找且只找一个可以与之匹配的结果,然后返回,(这里可以跟findall做一下对比,如果有多个值与之匹配,也仅仅返回一个值而已,如果找不到就返回None,返回None的时候是无法用group获取数据的会报错)需要使用group()获取返回值
#如果re.search找不到,就返回None。返回None时,使用group会报错 # ret = re.match('a', 'bva egon yuan')
# print(ret.group())
#match只是匹配索引值为0的值,仅仅这一位而已,后面的都不匹配,匹配上了需要使用group来获取返回值(一般用不到match,实用性太低了,可替代性强,上面的findall和search都可以替代它)
#匹配不上返回None,返回None时,如果使用group会报错 # 'a,b'.split(',') #[a,b]
# ret = re.split('[ac]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
# print(ret) # ['', '', 'cd'] # ret = re.sub('\d', 'H', 'eva3egon4yuan4',1) #replace(old,new,count)
# #sub(re,new,str,count)
# print(ret) # ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
# print(ret) # obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
# ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
# print(ret.group()) #结果 : 123
#
# re.search('\d{3}','abc123eeee').group()
# re.search('\d{3}','bcd123eeee')
# re.search('\d{3}','efg123eeee')
# re.search('\d{3}','xyz123eeee') # re.findall() #[]
ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器
print(ret) # <callable_iterator object at 0x10195f940>
for i in ret:
print(i.group())
# print(next(ret).group()) #查看第一个结果
# print(next(ret).group()) #查看第二个结果
# print([i.group() for i in ret]) #查看剩余的左右结果 # findall
# search
# match
# split
# sub/subn
# compile
# finditer express = '1 - 2 * ( (60-30 +(-40/5) * (9-3.33 + 198/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
#正则表达式
#0. 去掉表达式中的所有空格
#1. 从表达式中匹配出所有的()里面不再有小括号的表达式
#2. 从表达式9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14中匹配出第一个乘法或者除法
#3. 计算简单的两个数之间的+-*/
#4. 递归——不用递归更简单 ——> 循环
#5. 博客上的数字匹配

re里面的sub模块的分组

print(re.sub('^([a-z]+)([^a-z]+)(.*?)([^a-z]+)([a-z]+)$', r'\1\2\3\4\5', 'root:x:0:0::/root:/bin/bash'))
显示结果:root:x:0:0::/root:/bin/bash print(re.sub('^([a-z]+)([^a-z]+)(.*?)([^a-z]+)([a-z]+)$', r'\1\3\2\4\5', 'root:x:0:0::/root:/bin/bash'))
显示结果:rootx:0:0::/root:/bin:/bash print(re.sub('^([a-z]+)([^a-z]+)(.*?)([^a-z]+)([a-z]+)$', r'\2\1\3\4\5', 'root:x:0:0::/root:/bin/bash'))
显示结果::rootx:0:0::/root:/bin/bash print(re.sub('^([a-z]+)([^a-z]+)(.*?)([^a-z]+)([a-z]+)$', r'\3\1\2\4\5', 'root:x:0:0::/root:/bin/bash'))
显示结果:x:0:0::/root:/binroot:/bash
我们由上例子可得出,[1]是root [2]是: [3]是x:0:0::/root:/bin [4]是/ [5]是bash
所以我们的正则是分为了5个小组来匹配的,所以我们可以把这些小组进行排序,然后可以得到不同的结果

正则的一些小练习,灵活用法:

day19 正则,re模块的更多相关文章

  1. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

  2. 日志(logging)与正则(re)模块

    logging模块 #日志:日常的流水 =>日志文件,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中 #1.logging模块一共分为五个打印级别 debug.info.warn ...

  3. python正则--re模块常用方法

    前面几篇关于正则匹配的文章我用的方法都只有一个re.search 但其实正则re模块提供很多非常好用的方法,我们先来看看re模块都有那些属性方法呢 前面的一堆带_或者大写的就不关注了,主要关注最后面的 ...

  4. 正则 re模块

    Python 正则表达式 re 模块 简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 ‘hello ...

  5. python的正则re模块

    一. python的正则 python的正则模块re,是其内置模块,可以直接导入,即import re.python的正则和其他应用的正则及其相似,有其他基础的话,学起来还是比较简单的. 二. 正则前 ...

  6. python正则re模块

    今日内容: 知识点一:正则 什么是正则:  就是用一系列具有特殊含义的字符组成一套规则,改规则用来描述具有某一特征的字符串  正则就是用来在一个大的字符串中取出符合规则的小字符串   为什么用正则:  ...

  7. python 正则 re模块(详细版)

    正则表达式 什么是正则表达式? 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合 ...

  8. Python 正则表达模块详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  9. python - re正则匹配模块

    re模块 re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re ...

随机推荐

  1. PYTHON- 操作系统和python程序

    操作系统基础 应用程序的启动:(重点!!!) python解释器安装,多版本共存 执行python程序的两种方式 运行一个python程序经历的三个阶段(重要) python 的内存管理 ====== ...

  2. python2.7报错Non-ASCII character '\xe5' in file knn.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    Python默认是以ASCII作为编码方式的,如果在自己的Python源码中包含了中文(或者其他非英语系的语言),此时即使你把自己编写的Python源文件以UTF-8格式保存了,但实际上,这依然是不行 ...

  3. iOS 在 程序内调用手机上安装的地图软件进行导航

    // 需求是需要用户 能从 所在位置 到 附近的健身房的 路线, 然而,就一个需求,不值当的添加一个地图, 就用调用手机上第三方地图软件,  什么高德, 百度, 腾讯, iOS 原生地图都可以, 如果 ...

  4. ModuleNotFoundError: No module named 'requests'

    1.问题描述 DOS 执行 .py 脚本报错: ModuleNotFoundError: No module named 'requests' ModuleNotFoundError: No modu ...

  5. Confluence 6 用户目录图例 - Confluence 内部目录

    上面的图:Confluence 使用内部目录为用户管理. https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Config ...

  6. (一)STL体系结构基础介绍

    一.STL六大部件 容器(Containers):存放元素,内存由分配器搞定 分配器(Allocator):支持容器的内存分配 算法:操作容器元素的函数.与OO不同(面向对象将元素与函数放到一个类里) ...

  7. 电子书转换为PDF格式

    目录 一.mobi 转换 pdf 步骤 二.查看转换后的结果目录 三.将PDF还原文件名且移出至新目录 背景:当我们从网上下载一些电子小说或书籍的时候,一般文件的格式可能是.epub..mobi等.这 ...

  8. react 为组件添加样式

    width/height/fontSize:可以直接写数字: style={ width:200,height:200 } 其他带数字的可以:数字+'px' style={ lineHeight:20 ...

  9. Allegro PCB Design GXL (legacy) 从dxf文件中导入板框

    Allegro PCB Design GXL (legacy) version 16.6-2015 新建brd文件,并设置好相应的参数之后,点击菜单:File > Import > DXF ...

  10. C++ Primer 笔记——运行时类型识别

    1.dynamic_cast运算符的使用形式如下: dynamic_cast<type*>(e) // e必须是一个有效指针 dynamic_cast<type&>(e ...