一. 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. Spring注解(生命周期)

    对于上面的知识图解,需要一点一点的研究. 首先核心容器: 控制反转 和 依赖注入 创建工程: maven仓库搜索 spring context  : 引入后 <!-- https://mvnre ...

  2. Git如何进行分支管理?

    Git如何进行分支管理?     1.创建分支     创建分支很简单:git branch <分支名>     2.切换分支     git checkout <分支名>   ...

  3. PHP学习之路(一)

    先前对PHP的学习研究,今总结写下心得!!

  4. Java_WebKit_ZC01

    1. 1.1. F:\ZC_chrome_download\java_svg\__Java_call_Qt\qtjambi-master\doc\src\snippets\application.xm ...

  5. MyBatis使用自定义TypeHandler转换类型

    MyBatis虽然有很好的SQL执行性能,但毕竟不是完整的ORM框架,不同的数据库之间SQL执行还是有差异. 笔者最近在升级 Oracle 驱动至 ojdbc 7 ,就发现了处理DATE类型存在问题. ...

  6. django1.9的static文件配置

    修改setting.py,后面加入 STATIC_URL = '/static/' 上面那句是写死的,让django能调用静态文件,下面这句是配置静态文件的路径,路径可以填写多个,用逗号隔开 STAT ...

  7. Educational Codeforces Round 22E

    给你n和k,n个数,每个数范围1e5,m次查询,每次查询区间(l,r),在区间中的每个数,如果超过k次只算k次,否则算原来的次数,求总次数,强制在线 解法:线段树维护区间中每个数经过k次到达的点pos ...

  8. 【Java】抽象类和接口

    一.抽象类和抽象方法 1.什么是抽象类 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容. 但是普通类中不能有抽象方法, ...

  9. MySQL 5.6 二进制包安装配置多实例方法

    MySQL支持一台机器上启动多个实例,如果你的机器性能很好的话,启动多个实例将最大化利用你的服务器硬件资源. MySQL多实例一般有两种配置方法: 1.官方推荐的mysqld_multi方式,多个实例 ...

  10. ASP.NET MVC 中的IResolver<T> 接口

    在ASP.NET MVC 的源码一些实体对象(比如 ControllerBuilder,ControllerFactory, Filters, ViewEngines 等)不再直接通过关键字new来创 ...