1)

用管道符号(|)匹配多个正则表达式

举例

at | home     匹配 at, home

2)

匹配任意一个单个的字符(.)

举例

f.o  匹配在“f”和"o"中间的任何字符,如fao, f9o, f#o等

3)

从字符穿的开头或结尾或单词边界开始匹配(^/$/\b\B)

\b匹配的模式是一个单词边界,与之对应的模式一定在一个单词的开头;

\B只匹配出现在一个单词中间的模式,即不在单词边界上的字符。

举例

^From  匹配任何以From开始的字符串

/bin/tcsh$ 匹配任何以/bin/tcsh结束的字符串

^subject: hi$ 匹配仅由subject: hi组成的字符串

the   任何包含有“the”的字符串

\bthe 任何以“the”开始的字符串

\bthe\b 仅匹配单词“the”

4)创建字符类([])

使用方括号的正则表达式会匹配方括号里的任何一个字符。

方括号只有逻辑或的功能。

举例:

b[aeiu]t  匹配字符串 bat, bet, bit, but

[cr][23][dp][o2] 匹配字符串有16个组合,先[cr]选一个,接着[23]选一个,......,最后[o2]选一个。

5)指定范围(-)和否定(^)

方括号里一对符号中间的连字符(-)用来表示一个字符的范围。如[0-9],匹配十进制数

左方括号后第一个字符是上箭头符号(^),表示不匹配制定字符集里的任意字符。如[^aeiou],匹配一个非元音字符

6)使用闭包操作符(*, +, ? {})实现多次出现/重复匹配

*:  匹配它左边那个正则表达式出现0次或0次以上的情况;

+: 匹配它左边那个正则表达式至少出现一次的情况;

?:   匹配它左边那个正则表达式模式出现0次或一次的情况。

{}: 如{M}表示匹配M次出现的情况,{M,N}表示匹配M次到N次出现的情况。

[dn]ot? 匹配最多有一个字符“t”,即 do, no, dot, not.

[0-9]{15, 16} 匹配15或者16位数字,例如信用卡号码

</?[^>]+> 匹配所有合法的HTML标签的字符串,即<...>、</...>。

7)特殊字符

一些特殊字符可以用来代表字符集合。

\d:  表示[0-9]

\w: 表示[A-Za-z0-9]

\s:  表示空白字符

\D:  表示非十进制数字的字符,即[^0-9]

举例:

\w+-\d+ 表示一个字母和数字组成的字符串和至少一个数字,例如:ABCD-9

\d{3}-\d{3}-\d{4} 例如 800-555-1212

\w+@\w+\.com 例如xxxx@yyyy.com

8)用圆括号(())组建组

我们不仅想知道是否整个字符串匹配正则表达式,还想在匹配成功时取出某个特定的字符串或子字符串。

()的功能:

对正则表达式进行分组

匹配子组

举例:

m = re.match('(a(b))', 'ab') 两个子组

m.group() 所有匹配部分

m.group(1) 匹配的子组1 输出‘ab’

m.group(2) 匹配的子组2 输出'b'

m.groups() 所有匹配的子组的元组 输出 ('ab', 'b')

re模块:核心函数和方法

complie(pattern, flags=0)

对正则表达式模式pattern进行编译,flags是可选标识符,并返回一个regex对象

re模块的函数和regex对象的方法

match(pattern, string, flags=0)

尝试用正则表达式模式pattern匹配字符串string,flags是可选标识符,如果匹配成功,则返回一个匹配对象;否则返回None

search(pattern, string, flags=0)

在字符串string中搜索正则表达式模式pattern的第一次出现,如果匹配成功,则返回一个匹配对象;否则返回None

findall(pattern, string[,flags])

在字符串中搜索正则表达式模式pattern的所有出现(非重复),返回一个匹配对象的列表

finditer(pattern, string[,flags])

和findall()相同,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象

split(pattern, string, max=0)

根据正则表达式pattern中的分隔符把字符string分割为一个列表,返回成功匹配的列表,最多分割max次

sub(pattern, repl, string, max=0)

把字符串string中所有匹配正则表达式pattern的地方替换成字符串repl,如果max的值没有给出,则对所有匹配的地方进行替换

匹配对象的方法

group(num=0) 返回全部匹配对象

groups()  返回一个包含全部匹配的子组的元组

匹配多个字符串( | )

bt = 'bat|bet|bit'

m = re.match(bt, 'bat')

重复、特殊字符和子组

patt = '\w+@(\w+\.)?\w+\.com'

m = re.match(patt, 'nobody@xxx.com').group()

if m is not None: m.group()

输出: 'nobody@xxx.com'

m = re.match('(\w\w\w)-(\d\d\d)', 'abc-123')

m.group()  输出 'abc-123'

m.group(1) 输出'abc'

m.group(2) 输出‘123’

m.groups() 输出(‘abc’, '123')

python之正则表达式的更多相关文章

  1. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  2. Python 进阶 - 正则表达式

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  3. python study - 正则表达式

    第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...

  4. python使用正则表达式文本替换

    2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...

  5. python的正则表达式 re

    python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...

  6. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  7. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  8. 【Python】正则表达式纯代码极简教程

    <Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...

  9. 【Python】正则表达式简单教程

    说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...

  10. 【转】Python之正则表达式(re模块)

    [转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...

随机推荐

  1. jsp数据交互(一),九大内置对象

    九大内置对象 九大内置对象 内置对象 类型 说明 作用域 request javax.servlet.ServletRequest 请求对象——在 一次请求/一个Request请求周期 中传递数据,请 ...

  2. 使用crosswalk优化ionic2应用包

    ionic plugin add cordova-plugin-crosswalk-webview --save

  3. android技巧(五)一个异步+接口回调的例子

    public class DataBaseUtils { // 当前数据库地址 private String DB_PATH; // 备份后数据库保存地址 private String DB_BACK ...

  4. ibatis

    ibatis学习笔记(一)>>>>>>>sqlMapConfig.xml文件详解 1.sqlMapConfig.xml配置文件详解: Xml代码 1. < ...

  5. 【一套C语言控制台的输出框代码】

    效果演示 可以生成一个输出框 首先 要创建输出框,设置输出框风格,可以设置的元素包括: 左上角符号,右上角符号,左下角符号,右下角符号,以及上下左右边界线符号,理论上,只要你电脑能显示的符号,都可以支 ...

  6. VIm 一些常用的设置

    一些常用的vim设置   以下内容皆来源于网络,感谢原作者.如果引用出处错误,请告知以便修改. 1. vim的几种模式和按键映射 转载自:[1] Map是Vim强大的一个重要原因,可以自定义各种快捷键 ...

  7. Asp.net Web.Config - 配置元素 caching

    Asp.net Web.Config - 配置元素 caching 记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表   元素 说明 cache ...

  8. Quartz定时调度配置

    1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...

  9. 关于JavaScript 中的变量

    JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里: 函数体内部,局部变量的优先级比同名的全局变量高. Javas作用域分类 未使用var定义的变量不论定义在什么位置都是全局变量, ...

  10. Android之QQ登录界面

    首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得 ...