使用正则表达式
--re模块提供了一个正则表达式引擎的接口,可以让你将REstring编译成对象并用它们来进行匹配
--编译正则表达式
#!python
>>>import re
>>>p = re.compile('ab*')
>>>print p
--re.compile()也接受可选的标志参数,常用来实现不同的特殊功能和语法变更
#!python
>>>p = re.compile('ab*',re.IGNORECASE)
--反斜杠的麻烦
1.字符串前加"r"反斜杠就不会被任何特殊方式处理
\section 要匹配的字符串
\\section 为re.compile取消反斜杠的特殊意义
"\\\section" 为"\\section"的字符串实值(string literals)取消反斜杠的特殊意义
--执行匹配
1.'RegexObject'实例有一些方法和属性,完整的列表查阅Python Library Reference
match():决定RE是否在字符串刚开始的位置匹配
search():扫描字符串,找到这个RE匹配的位置
findall():找到RE匹配的所有子串,并把它们作为一个列表返回
finditer():找到RE匹配的所有子串,并把它们作为一个迭代器返回
如果没有匹配的话,match()和search()将返回None;否则,返回一个'MatchObject'实例。
--MatchObject实例方法
group():返回RE匹配的字符串
start():返回匹配开始的位置
end():返回匹配结束的位置
span():返回一个元组包含匹配(开始,结束)的位置
实际编程中,最常用的做法是将'MatchObject'保存在一个变量里,然后检查它是否 为None.
#!python
p = re.compile(...)
m = p.match('string goes here')
if m:
print 'Match found;',m.group()
else:
print 'No match'
--模块级函数
1.re模块也提供了顶级函数调用如match()、search()、sub()、subn()、split()、 findall()等
--编译标志-flags
DOTALL,S:使.匹配包括换行在内的所有字符
IGNORECASE,I:使匹配对大小写不敏感
LOCALE,L:做本地化识别(local-aware)匹配
MULTILINE,M:多行匹配,影响^和$
VERBOSE,X:能够使用REs的verbose状态,使之被组织的更清晰易懂
--分租
"("和")"