m是下界,n是上界 。m省略表下界是0,n省略,表上界无限大 。
*表示{,} +表示{1,} ?表示{0,1}
最大匹配和最小匹配 python都是最大匹配 , 如果要最小匹配,在*,+,?,{m,n}后面加一个?.
match object的end可以得到匹配的最后一个字符的位置 。
re.compile("a*").match('aaaa').end()4最大匹配
re.compile("a*?").match('aaaa').end()0最小匹配
使用原始字符串
字符串表示方法中用\\表示字符\.大量使用影响可读性 。
解决方法:在字符串前面加一个r表示raw格式 。
a = r"\a" print a 结果是\a
a = r"\"a" print a 结果是\"a
使用re模块
先用re.compile得到一个RegexObject 表示一个regexp
后用pattern的match,search的方法,得到MatchObject
再用match object得到匹配的位置,匹配的字符串等信息
RegxObject常用函数:
re.compile("a").match("abab") 如果abab的开头和re.compile("a")匹配,得到MatchObject
_sre.SRE_Match object at 0x81d43c8
print re.compile("a").match("bbab")
None 注:从str的开头开始匹配
re.compile("a").search("abab") 在abab中搜索第一个和re_obj匹配的部分
_sre.SRE_Match object at 0x81d43c8
print re.compile("a").search("bbab")
_sre.SRE_Match object at 0x8184e18 和match()不同,不必从开头匹配
re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.
返回一个tuple,其中元素是匹配的字符串.
MatchObject的常用函数
m.start() 返回起始位置,m.end()返回结束位置(不包含该位置的字符).
m.span() 返回一个tuple表示(m.start(), m.end())
m.pos(), m.endpos(), m.re(), m.string()
m.re().search(m.string(), m.pos(), m.endpos()) 会得到m本身
m.finditer()可以返回一个iterator,用来遍历所有找到的MatchObject.
for m in re.compile("[ab]").finditer("tatbxaxb"):
print m.span()
高级regexp
| 表示联合多个regexp. A B两个regexp,A|B表示和A匹配或者跟B匹配.
^ 表示只匹配一行的开始行首,^只有在开头才有此特殊意义 。
$ 表示只匹配一行的结尾
\A 表示只匹配第一行字符串的开头 ^匹配每一行的行首
\Z 表示只匹配行一行字符串的结尾 $匹配第一行的行尾
\b 只匹配词的边界 例:\binfo\b 只会匹配"info" 不会匹配information
\B 表示匹配非单词边界
示例如下:
print re.compile(r"\binfo\b").match("info ") #使用raw格式 \b表示单词边界
_sre.SRE_Match object at 0x817aa98
print re.compile("\binfo\b").match("info ") #没有使用raw \b表示退格符号
None
print re.compile("\binfo\b").match("\binfo\b ")
_sre.SRE_Match object at 0x8174948
分组(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups()('abc', 'b')
#!/usr/local/bin/python
import re
x = """
name: Charles
Address: BUPT
name: Ann
Address: BUPT
"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile得到RegxObject时 , 可以有一些flag用来调整RegxObject的详细特征.
DOTALL, S 让.匹配任意字符,包括换行符\n
IGNORECASE, I 忽略大小写
LOCALES, L 让\w \W \b \B和当前的locale一致
MULTILINE, M 多行模式,只影响^和$(参见上例)
VERBOSE, X verbose模式
python中的temptemp指临时文件夹 。
很多临时文件放在这里tmp函数python,用来收藏夹tmp函数python,浏览网页tmp函数python的临时文件tmp函数python,编辑文件等,根据操作的过程进行临时保存的文件技术 。
应定期删除各种应用程序在\Windows\Temp文件夹中存储的临时文件 , 以清除上述这些零散的文本 。还应删除其子目录中相应的所有文件 。虽然很多文件的扩展名为".tmp",但它们其实是完整的DOC文件、HTML文件、甚至是图像文件 。
推荐阅读
- 打架女主播的视频直播软件,打架女主播的视频直播软件叫什么
- 直播答题小程序开发,直播答题小程序开发方案
- 格斗游戏格斗女皇,格斗游戏格斗女皇是谁
- c语言私有函数是什么意思 c语言私有变量
- 如何进行大数据的营销分析,大数据营销的步骤
- gis汉化后图层不能编辑,gis汉化后图层不能编辑怎么办
- 休闲益智游戏推箱子,益智推箱子怎么玩
- vb.net工具栏翻译 vb属性窗口翻译中文
- 不常用的Linux命令,常用的linux 命令