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

二. 正则前r说明
由于正则式的规则也是由一个字符串定义的,而在正则式中大量使用转义字符 ’/’ ,如果不用 raw 字符串,则在需要写一个 ’/’ 的地方,你必须得写成 ’//’, 那么在要从目标字符串中匹配一个 ’/’ 的时候,你就得写上 4 个 ’/’ 成为 ’////’ !这当然很麻烦,也不直观,所以一般都使用 r’’ 来定义规则字符串。当然,某些情况下,可能不用 raw 字符串比较好。

来自 <http://www.cnblogs.com/dreamer-fish/p/5282679.html>

三. 正则里面的常用函数

1. re.match函数
用法:re.match(pattern, string, flags=0)
使用说明:re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

2. re.search方法:一般使用这个
用法:re.search(pattern, string, flags=0)
使用说明:re.search 扫描整个字符串并返回第一个成功的匹配。

3. re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

4. re.sub用于替换字符串中的替换项
用法:re.sub(pattern, repl, string, count=0, flags=0)
repl:替换的字符串,也可以是一个函数
使用说明:count=0,替换的最大次数,默认0替换到所有的匹配项

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
# 将匹配的数字乘于 2
def double(matched):
value = int(matched.group('value'))
return str(value * 2)
s = 'A23G4HFD567'
print(re.sub('(?P<value>\d+)', double, s)) 来自 <http://www.runoob.com/python/python-reg-expressions.html>

  

5. re.findall
用法:re.findall(pattern,string,flags=0)
使用说明:遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表

6. re.compile
用法:re.compile(pattern, flags=0):
使用说明:compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换

7. re.split
用法:re.split(pattern, string, maxsplit=0, flags=0)
使用说明:能够匹配的字符串将string分割后返回列表

str='12sdf123asdfadsf245'
list=re.split(r'\D+',str,maxsplit=1)
print(list)

  

8. re.finditer
用法:re.finditer(pattern,string,flags=0)
使用说明:搜索string,返回一个顺序访问每一个匹配结果(match对象)的迭代器。找到RE匹配的所以子串,并把他们作为一个迭代器返回

四. 正则表达式pattern

五. 正则里面的flag,即修饰符,可选标志

修饰符 描述
re.I 使匹配对大小写不敏感,大写的ignore
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

来自 <http://www.runoob.com/python/python-reg-expressions.html>

六. 正则中的分组group

pattern可包含括号,包含的内容将作为一个分组内容
group和groups是两个不同的函数。
m.groups() 返回所有括号匹配的字符,以tuple格式。
m.group() == m.group(0) == 所有匹配的字符
一般,m.group(N) 返回第N组括号匹配的字符。
而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的
m.groups() == (m.group(0), m.group(1), ...)

起名的group

import re
str="Doe,John:555-1212"
match=re.search(r'(?P<last>\w+),(?P<first>\w+):(?P<phone>\S+)',str,re.I)
print(match.group('last'))#Doe
print(match.group('John'))#Doe
print(match.group('phone'))#555-1212

七. 常用的正则表达式

IP地址:IP_compile=re.compile(r'^([1]?\d\d?|2[0-4]\d|25[0-5])\.([1]?\d\d?|2[0-4]\d|25[0-5])\.([1]?\d\d?|2[0-4]\d|25[0-5])\.([1]?\d\d?|2[0-4]\d|25[0-5])$')
手机号码匹配 :tel_compile=re.compile(r'^[1][3578][0-9]{9}$')

密码正则可参考我的另一篇文章:http://www.cnblogs.com/skiler/p/6652924.html

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

  1. python - re正则匹配模块

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

  2. Python(正则 re模块)

    1. 匹配一个字符 表达式 说明 等价表达式 \d 数字 [0-9] \w 字母.数字.下划线 [a-zA-Z0-9_] . 除换行外任意字符   \s 空格 [\t\n\r\f\v] \D 除数字 ...

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

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

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

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

  5. python中常用的模块的总结

    1. 模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件.(例如:文件名:test.py,对应的模块名:test) ...

  6. python re 正则

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  7. Python爬虫之urllib模块1

    Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...

  8. 正则 re模块

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

  9. python 速记正则使用(转)

    目录 python 速记正则使用(转) 正则表达式语法 字符与字符类 量词 组与捕获 断言与标记 条件匹配 正则表达式的标志 Python正则表达式模块 四大功能 两种方法 常用方法 匹配对象的属性与 ...

随机推荐

  1. MySQL Binlog解析(1)

    一.Binlog File Binlog files start with a Binlog File Header followed by a series of Binlog Event Binl ...

  2. Sybase:数据库检索的日期格式

    Sybase:数据库检索的日期格式 示例代码: --1,字符转日期 ' as date ),'yyyy/mm/dd'); ---结果:2018/03/09 --2,一年内第几天 ' as date ) ...

  3. [POI2009]Lyz

    Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人.xi为负,则代表走了这么多人 ...

  4. Java中的条件运算符

    条件运算符( ? : )也称为 “三元运算符”. 语法形式:布尔表达式 ? 表达式1 :表达式2 运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值 例如: ...

  5. scala学习手记37 - 容器的使用

    这次统一看一下scala中容器类的几个方法. Set filter()方法 filter()方法用来从Set中过滤获取含有指定特征的元素.示例代码如下: val colors1 = Set(" ...

  6. ps切图步骤

    1.复制图层到新建 2.alt + i + r  裁剪 依次按 3.ctrl + alt + shift + s  保存 裁剪图标  复制到图层 , 删除背景,并复制样式 就可以做到 背景透明.

  7. MyEclipse安装git插件

    安装egit插件的步骤(安装egit不成功的原因主要是下载的egit版本不适合当前使用的eclipse版本).先检查自己MyEclipse适用egit的版本. 查看自己MyEclipse版本,如下图: ...

  8. 编译android源码中的icu4c

    在external/icu4c/studata/readme.txt,里面有修改icu4c中资源的编译方法 # 具体步骤(可复制下面命令,直接运行): # 1)新增或者修改external/icu4c ...

  9. opensack-mitaka网络性能测试shaker

    一.项目介绍 Shaker项目是由Mirantis发起,专门针对OpenStack网络性能的测试工具.通过模拟不同的网络场景和heat模板,创建虚拟机,并在虚拟机里运行iperf.iperf3.net ...

  10. linux文件组、权限等

    文件所有者.所在组合其他组  --改变用户所在组    组和在oa系统中的组差不多,用户代表的好像是个体,组有点像角色的意思.不过权限的话并不是个体从组中获得,组仅仅是一个机制,进行部分文件控制与共享 ...