第十六章、 正则表达式
1)    匹配多个表达式
记号  re1|re2
说明  匹配正则表达式re1或re2
举例  foo|bar  匹配  foo, bar
记号  {N}
说明  匹配前面出现的正则表达式N
举例  [0-9]{3}  匹配

2)    匹配单个/多个/范围内字符
记号  .
说明  匹配任何字符(换行符除外)
举例  b.b  匹配  b和b中间有一个任意字符bab, bcb, bbb
举例  .. (匹配任何两个字符)  匹配  xx, ab
记号  […]
说明  匹配字符组里面出现的任意一个字符
举例  b[aeiou]t  匹配3字符串 bat,bit,but,bet
举例  [ab][23][xy] 匹配3字符串  a2x,a3y,b2x,b3x
记号  [..x-y..]
说明  匹配从字符x到y中的任意一个字符
举例  [0-9] 匹配任意一个十进制数字,
[A-Za-z] 匹配任意一个字母

3)    匹配开头结尾边界
记号  ^
说明  匹配字符串的开始
举例  ^Dear  匹配  任何以Dear开始的字符串
记号  $
说明  匹配字符串的结尾
举例  /bin/*sh$  匹配  任何以/bin/*sh结束的字符串

4)    否定范围
记号  [^…]
说明  不匹配此字符集中出现的任何一个字符,包括某一范围的字符
举例  [^aeiou]匹配
[^A-Za-z0-9]  匹配

5)    多次出现/重复匹配
记号  *
说明  匹配前面出现的正则表达式零次或多次
举例  [A-Za-z0-9]*  匹配  a
记号  +
说明  匹配前面出现的正则表达式一次或多次
举例  [a-z]+\.com  匹配  qq.com, baidu.com
记号  ?
说明  匹配前面出现的正则表达式零次或一次
举例  goo?  匹配  go,goo
0?[1-9]匹配1到9的任意数字,前面可能有个0
记号  {M,N}
说明  匹配重复出现M次到N次的正则表达式
举例  [0-9]{5,10}  匹配5到9位数字,如QQ号码
[KQRBNP][a-h][1-8]-[a-h][1-8]国际象棋合法移动
记号  (*|+|?{})?
说明  用于上面出现的任何”非贪婪”.版本重复匹配次数符号
举例  .*?[a-z]  匹配

6)    特殊字符
记号  \d
说明  匹配任何数字,和[0-9]一样(\D为\d的反义,任何非数字符)
举例  data\d+.txt  匹配data后面一个或多个数字.txt
\d{3}-\d(3)-d{4} 匹配美国电话号码,如800-555-1212
记号  \w
说明  匹配任何数字字母字符,和[A-Za-z0-9_]相同,(\W为\w的反义)
举例  [A-Za-z_]\w+  匹配任意字母再加任意一个字母或数字
\w+@\w+\.com 匹配一个电子邮件,如xxx@yyy.com
记号  \s
说明  匹配任何空白符,和[\n\t\r\v\f]相同(\S是\s的反义)
举例  of\sthe  匹配 of the
记号  \b
说明  匹配单词边界(\B是\b的反义)
举例  \bthe\b  仅匹配单词the
/bthe 任何以the开始的字符串
记号  \nn
说明  匹配已保存的子组(参考(…))
举例  price:\16  匹配 
记号  \c   
说明  逐一匹配特殊字符c(即取消特殊含义,按字面匹配)
举例  \.,\\,\*  匹配 
记号  \A(\Z)
说明  匹配字符串的起始(结束)
举例  \ADear 以Dear开始的字符串

7)    用圆括号组建组
记号  (…)
说明  匹配封闭括号中正则表达式(RE),并保存为子组
举例  ([0-9]{3})?, f(oo|u)bar  匹配 
\d+(\.\d*)? 匹配浮点型数字,任意十进制数字加一个可选小数部分(包括一个小数点,零个或多个十进制数字),如0.004,75等.

8)    其它
记号  literal
说明  匹配字符串的值
举例  foo  匹配  foo

import re;
patt = '(\w+)-(\d+)'
strg = 'abc-123'
m = re.match(patt, strg)
print m.group() #abc-123 //所有匹配部分
print m.group(1) #abc //匹配的子组1
print m.group(2) #123 //匹配的子组2
print m.groups() #('abc', '123') //所有匹配子组 

findall找个每个匹配的部分

>>> re.findall('car', 'carry the car') #['car', 'car']

sub搜索替换

>>> re.sub('X', 'Mr.Smith', 'Dear X') #'Dear Mr.Smith'

subn搜索替换并返回次数

>>> re.subn('X', 'Mr.Smith', 'Dear X') #('Dear Mr.Smith', 1)

split分割字符串

>>> re.split(':', 'str1:str2:str3') #['str1', 'str2', 'str3'] 

贪婪匹配

data = ':1234567-8-9'
print re.search('\d+-\d+-\d+', data).group() #1234567-8-9
print re.match('.+\d+-\d+-\d+', data).group() #:1234567-8-9
print re.match('.+(\d+-\d+-\d+)', data).group(1) #7-8-9
print re.match('.+?(\d+-\d+-\d+)', data).group(1) #1234567-8-9 

python 教程 第十六章、 正则表达式的更多相关文章

  1. 进击的Python【第十六章】:Web前端基础之jQuery

    进击的Python[第十六章]:Web前端基础之jQuery 一.什么是 jQuery ? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多&quo ...

  2. Flask 教程 第十六章:全文搜索

    本文翻译自The Flask Mega-Tutorial Part XVI: Full-Text Search 这是Flask Mega-Tutorial系列的第十六部分,我将在其中为Microblo ...

  3. python 教程 第二十二章、 其它应用

    第二十二章. 其它应用 1)    Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...

  4. python 教程 第十五章、 结构布局

    第十五章. 结构布局 #!/usr/bin/env python #(1)起始行 "this is a module" #(2)模块文档 import sys #(3)模块导入 d ...

  5. python 教程 第十四章、 地址薄作业

    第十四章. 地址薄作业 #A Byte of Python #!/usr/bin/env python import cPickle import os #define the contacts fi ...

  6. python 教程 第十二章、 标准库

    第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1)    sys模块 import sys if len(sys.argv) ...

  7. python 教程 第十九章、 图形界面编程

    第十九章. 图形界面编程 import Tkinter top = Tkinter.Tk() hello = Tkinter.Label(top, text='Hello World!') hello ...

  8. C#图解教程 第十六章 转换

    转换 什么是转换隐式转换显式转换和强制转换 强制转换 转换的类型数字的转换 隐式数字转换溢出检测上下文 1.checked和unchecked运算符2.checked语句和unchecked语句 显式 ...

  9. 进击的Python【第十四章】:Web前端基础之Javascript

    进击的Python[第十四章]:Web前端基础之Javascript 一.javascript是什么 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编 ...

随机推荐

  1. Linux上制作Window启动盘

    Linux上制作Window启动盘 注意: U盘在Linux中的标签(依具体情况而定:执行df查看) U盘 ----- /dev/sdb4 格式化U盘 建立U盘的启动分区 安装关键工具 ms-sys ...

  2. [RxJS] Implement pause and resume feature correctly through RxJS

    Eventually you will feel the need for pausing the observation of an Observable and resuming it later ...

  3. php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性)

    php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性) 一.总结 链表反转两 ...

  4. iOS开发Quzrtz2D:十一:图片截屏以及图片擦除

    一:图片截屏:截取的是控制器的view #import "ViewController.h" @interface ViewController () @end @implemen ...

  5. Intent七在属性之一:ComponentName 分类: H1_ANDROID 2013-11-10 10:54 1184人阅读 评论(1) 收藏

    注:在<疯狂android讲义>中,此属性称为Component,官方文档中称为ComponentName. 1.The name of the component that should ...

  6. Java 并发工具包 java.util.concurrent 大全

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  7. centos7安装nginx的两种方法

    第一种方式:通过yum安装 直接通过 yum install nginx 肯定是不行的,因为yum没有nginx,所以首先把 nginx 的源加入 yum 中 运行下面的命令: 1.将nginx放到y ...

  8. uva 1519 - Dictionary Size(字典树)

    题目链接:uva 1519 - Dictionary Size 题目大意:给出n个字符串组成的字典.如今要加入新的单词,从已有单词中选出非空前缀和非空后缀,组成新单词. 问说能组成多少个单词. 解题思 ...

  9. 自绘实现半透明水晶按钮(继承CButton,设置BS_OWNERDRAW风格,覆盖DrawItem函数绘制按钮,把父窗口的背景复制到按钮上,实现视觉上的透明,最后通过AlphaBlend实现半透明)

    运行效果 实现方法 1.给按钮加上BS_OWNERDRAW样式2.重载DrawItem函数,在这里绘制按钮3.关键之处就是把父窗口的背景复制到按钮上,实现视觉上的透明4.最后通过AlphaBlend实 ...

  10. Linux环境编写脚本安装配置JDK,Tomcat,含Tomcat自启动

    mkdir /usr/java mkdir /znywImage cp -f /usr/jdk-7u79-linux-x64.tar.gz /usr/java tomcatPath=/usr/apac ...