Python学习笔记08
正则表达式包re
match,search,sub
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0)
re.sub(pattern, repl, string, max=0)
re.split(pattern,string,maxsplit,flags=0) # 根据正则表达式分割字符串, 将分割后的所有子字符串放在一个表(list)中返回
re.findall(pattern,string,flags=0) # 根据正则表达式搜索字符串,将所有符合的子字符串放在一给表(list)中返回
re.compile(pattern,flags=0)
- import re
- line = "Cats are smarter than dogs"
- matchObj = re.match(r'(.*) are (.*?) .*',line,re.M | re.I)
- if matchObj:
- print "matchObj.group() : ", matchObj.group(0)
- print "matchObj.group(1) : ", matchObj.group(1)
- print "matchObj.group(2) : ", matchObj.group(2)
- else:
- print "No match!!"
- import datetime,re,os
- str = 'output_1981.10.21.txt'
- m = re.match(r'output_(\d{4}).(\d{2}).(\d{2}).txt',str)
- m2 = re.findall(r'(?P<year>\d{4}).(?P<month>\d{2}).(?P<day>\d{2})',str)
- m3 =re.search("(?P<year>\d{4})\.(?P<month>\d{2})\.(?P<day>\d{2})\.",str)
- print m2
- print m.group(0)+",",m.group(1)+",",m.group(2)+",",m.group(3)
- print m3.group("year")
- m2 =m2[0]
- print m2
- date = datetime.date(int(m2[0]),int(m2[1]),int(m2[2]))
- print date.weekday()
可选标识说明
|
修饰符 |
描述 |
|
re.I |
使匹配对大小写不敏感,Ignore |
|
re.L |
做本地化识别(locale-aware)匹配 |
|
re.M |
多行匹配,影响 ^ 和 $,MutilLine |
|
re.S |
使 . 匹配包括换行在内的所有字符 |
|
re.U |
根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.,Unicode |
|
re.X |
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
表达式解释
|
个或多个的表达式。 |
|
|
个或多个的表达式。 |
|
|
个或1个由前面的正则表达式定义的片段,非贪婪方式 |
|
|
re{ n} |
|
|
re{ n,} |
精确匹配n个前面表达式。 |
|
re{ n, m} |
匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式 |
|
a| b |
匹配a或b |
|
(re) |
G匹配括号内的表达式,也表示一个组 |
|
(?imx) |
正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。 |
|
(?-imx) |
正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。 |
|
(?: re) |
类似 (...), 但是不表示一个组 |
|
(?imx: re) |
在括号中使用i, m, 或 x 可选标志 |
|
(?-imx: re) |
在括号中不使用i, m, 或 x 可选标志 |
|
(?#...) |
注释. |
|
(?= re) |
前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。 |
|
(?! re) |
前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功 |
|
(?> re) |
匹配的独立模式,省去回溯。 |
|
\w |
匹配字母数字 |
|
\W |
匹配非字母数字 |
|
\s |
匹配任意空白字符,等价于 [\t\n\r\f]. |
|
\S |
匹配任意非空字符 |
|
\d |
匹配任意数字,等价于 [0-9]. |
|
\D |
匹配任意非数字 |
|
\A |
匹配字符串开始 |
|
\Z |
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。c |
|
\z |
匹配字符串结束 |
|
\G |
匹配最后匹配完成的位置。 |
|
\b |
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
|
\B |
匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
|
\n, \t, 等. |
匹配一个换行符。匹配一个制表符。等 |
|
\1...\9 |
匹配第n个分组的子表达式。 |
|
\10 |
匹配第n个分组的子表达式,如果它经匹配。否则指的是八进制字符码的表达式。 |
Python学习笔记08的更多相关文章
- python学习笔记08:安装django
linux环境安装django: sudo pip install django windows环境安装django: pip install django 验证django是否安装: python ...
- python 学习笔记 13 -- 经常使用的时间模块之time
Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: * time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
随机推荐
- swift学习记录之代理
/// 访客视图的协议 protocol VisitorLoginViewDelegate: NSObjectProtocol { func visitorLoginViewWillRegister( ...
- sehll_if
-s file 文件大小非0时为真 [ -f "somefile" ] :判断是否是一个文件[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可 ...
- Android ANR分析(2)
转自:http://blog.csdn.net/ruingman/article/details/53118202 定义 主线程在特定的时间内没有做完特定的事情 常见的场景 A.input事件超过 ...
- ***PHP Notice: Undefined index: ..问题的解决方法
首先,这个不是错误,是warning.所以如果服务器不能改,每个变量使用前应当先定义. 方法1:服务器配置修改 修改php.ini配置文件,error_reporting = E_ALL &a ...
- Delphi强制类型转化和类型约定
强制类型转换时一种技术,通过它能够使编译器把一种类型的变量当做另一种类型. 由于Pascal有定义新类型的功能,因此编译器在调用一个函数时候对形参和实参类型匹配的检查是非常严格的.因此为了能够通过编译 ...
- [LeetCode] Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- Oracle 数组赋值
只需要像下面这样就OK了 begin -- Call the procedure in_var(1):=null;in_var(1):='a123123'; pack_abc.pro_abc(in_v ...
- Juery Ajax语法
$.ajax({ url: "/ForgetCard/ForgetLogin",//方法路径URL data: { strUser: $("#textUser" ...
- 使用zookeeper实现分布式锁
简介: 核心是解决资源竞争的问题 分布式系统中经常需要协调多进程或者多台机器之间的同步问题,得益于zookeeper,实现了一个分布式的共享锁,方便在多台服务器之间竞争资源时,来协调各系统之间的协作和 ...
- HDU 5869 Different GCD Subarray Query 离线+树状数组
Different GCD Subarray Query Problem Description This is a simple problem. The teacher gives Bob a ...