福利
先上福利,python2.0和pytyon3.0的安装和用法都有,适合新手或查询使用。
http://www.runoob.com/python3/python3-tutorial.html
正则表达式
虽然Python字符串提供了众多实用的函数,但实际处理字符串时,常常需要更强大的工具。鉴于此,Python提供了一种用于复杂字符串处理的微型语言—正则表达式,但正则表达式并不是Python的一部分。
正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。实际上,正则表达式是一种简练描绘一组字符串的方式,可用于高效地执行常见的字符串处理任务,如匹配、替换和分拆字符串。
使用正则表达式编写一些逻辑验证非常方便,如:电子邮件及电话号码的格式验证。Python提供了re模块实现正则表达式的验证。
1、re模块中一些重要函数
函数 | 描述 |
---|---|
compile(pattern[,flags]) | 根据包含正则表达式的字符串创建模式对象 |
search(pattern,string[,flags]) | 在字符串中查找模式 |
match(pattern,string[,flags]) | 在字符串的开始处匹配模式 |
split(pattern,string) | 根据模式的匹配项来分割字符串 |
findall(pattren.String) | 列出字符串中模式的所有匹配项 |
sub(pat,repl,string[.Count=0]) | 将字符串中所有pat的匹配项用repl替换 |
escape(string) | 将字符串中所有特殊正则表达式字符转义 |
例1:
>>> import re
>>> some_text='alpha, beta,,,gamm delta'
>>> #用任意长度的逗号和空格分割字符串
>>> re.split('[, ]+', some_text)
['alpha', 'beta', 'gamm', 'delta']
>>>
>>> #maxsplit参数表示字符串最多可以分割的次数
>>> re.split('[, ]+', some_text, maxsplit=2)
['alpha', 'beta', 'gamm delta']
>>>
>>> #在字符串中查找所有单词
>>> pat='[a-zA-Z]'+ #模式
>>> text='"Hm... Err-- are you sure?" he said, sounding insecure.'
>>> re.findall(pat,text)
['Hm', 'Err', 'are', 'you', 'sure', 'he', 'said', 'sounding', 'insecure']
>>> #查找标点符号
>>> pat='[.?\-",]+' #横线-被转义了
>>> re.findall(pat,text)
['"', '...', '--', '?"', ',', '.']
>>>
>>> #使用给定的替换内容将匹配模式的子字符串(最左端且非重叠的子字符串)替换掉
>>> pat='{name}'
>>> text='Dear {name}...'
>>> re.sub(pat, 'Mr. Gumby', text)
'Dear Mr. Gumby...'
>>>
>>> #对字符串中所有可能被解释为正则表达式的字符进行转义
>>> re.escape('www.python.org')
'www\\.python\\.org'
>>> re.escape('But where is the ambigity?')
'But\\ where\\ is\\ the\\ ambigity\\?'
2、re模块中匹配对象的重要方法
方法 | 描述 |
---|---|
group([group1,…]) | 过去给定子模块(组)的匹配项 |
start([group]) | 返回给定组的匹配项的开始位置 |
end([group]) | 返回给定组的匹配项的结束位置(与分片一样,不包括组的结束位置) |
span([group]) | 返回一个组的开始和结束位置 |
例2:
>>>import re
>>>me = re.match('www\.(.*)\.','www.python.org')
>>>print(m.group) #若执行m.group(0),则匹配整个字符串
>>>print(m.start(1)) #返回给定组的匹配项的开始位置
>>>print(m.end(1)) #返回给定组的匹配项的结束位置
>>>print(m.span(1)) #返回给定组的开始和结束位置
#执行结果
>python
>4
>10
>(4,10)
例3:假设要是被逗人的字符串:开头为一个或多个‘ha’,末尾为一个或多个‘!’
import re
def is_funny(s):
return re.match('(ha)+!+',s) != None
print(is_funny('haha!'))
print(is_funny('ha!!!!!'))
print(is_funny('hahaha!!'))
print(is_funny('!!!'))
#执行结果
>True
>True
>True
>False
3、关于正则表达式的说明
Python的re模块规模庞大,其中有大量正则表达式函数可用于执行字符串处理任务,如匹配、分拆和替换;
还有提高常用正则表达式处理速度的技巧,以及众多匹配常用字符的捷径。
更多re模块的参考文档