python正则表达式2
2018-06-18 02:02:24来源:未知 阅读 ()
匹配电话号码:
1 >>> import re 2 >>> pattern=r'\d{3,4}-?\d{8}' 3 >>> re.findall( pattern, '021-12345678' ) 4 ['021-12345678'] 5 >>> re.findall( pattern, '02188888888' ) 6 ['02188888888'] 7 >>> re.findall( pattern, '0218888888' ) 8 [] 9 >>> re.findall( pattern, '021-8888888' ) 10 [] 11 >>>
把正则表达式,编程成一个对象,可以提高匹配效率
>>> patterTel=re.compile( pattern ) >>> patterTel <_sre.SRE_Pattern object at 0x7fd19ba5ab90> >>> patterTel.findall( '021-88888888' ) ['021-88888888'] >>>
可以通过编译成对象,传参(re.I),把匹配方式改成忽略大小
1 >>> pattern=r'[a-z]+' 2 >>> re.findall( pattern, 'abc' ) 3 ['abc'] 4 >>> re.findall( pattern, 'aBc' ) 5 ['a', 'c'] 6 >>> re.compile( pattern, re.I ) 7 <_sre.SRE_Pattern object at 0x7fd19b906490> 8 >>> cPattern = re.compile( pattern, re.I ) 9 >>> cPattern.findall( 'aBc' ) 10 ['aBc'] 11 >>>
match,匹配到的字符是否在 被匹配字符串的开头,如果是,返回一个对象.
>>> pattern=r'abc' >>> re.match( pattern, 'ghostwu abc' ) >>> re.match( pattern, 'abc ghostwu' ) <_sre.SRE_Match object at 0x7fd19b96c780> >>> re.match( pattern, ' abc ghostwu' ) >>> res = re.match( pattern, 'abc ghostwu' ) >>> if res: ... print '是以abc开头的' ... else: ... print '不是以abc开头的' ... 是以abc开头的 >>>
search:存在就返回对象
>>> pattern=r'abc' >>> re.search( pattern, 'abc ghostwu' ) <_sre.SRE_Match object at 0x7fd19b96c850> >>> re.search( pattern, 'ghostwu abc' ) <_sre.SRE_Match object at 0x7fd19b96c780> >>> re.search( pattern, 'ghostwu abc def' ) <_sre.SRE_Match object at 0x7fd19b96c850> >>> re.search( pattern, 'ghostwu def' ) >>>
finditer返回一个迭代器,findall返回的是列表
>>> pattern=r'abc' >>> iterator=re.finditer( pattern, 'abc def abc ghostwu abc' ) >>> iterator.next() <_sre.SRE_Match object at 0x7fd19b96c780> >>> iterator.next() <_sre.SRE_Match object at 0x7fd19b96c850> >>> iterator.next() <_sre.SRE_Match object at 0x7fd19b96c780> >>> iterator.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
group方法,可以查看match匹配到的值
>>> pattern=r'abc' >>> res=re.match( pattern, 'abc ghostwu abc' ) >>> res <_sre.SRE_Match object at 0x7fd19b96c850> >>> res.group() 'abc'
同样可用于迭代器返回的对象
>>> pattern=r'abc' >>> re.finditer( pattern, 'abc ghostwu abc abc hello' ) <callable-iterator object at 0x7fd19b982190> >>> res = re.finditer( pattern, 'abc ghostwu abc abc hello' ) >>> res.next().group() 'abc' >>> res.next().group() 'abc' >>> res.next().group() 'abc' >>> res.next().group() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
re.sub:替换
>>> str='hello abc' >>> str.replace( 'abc', 'ghostwu' ) 'hello ghostwu' >>> str 'hello abc' >>> re.sub( r'abc', 'ghostwu', str ) 'hello ghostwu' >>>
把小写的(r,s,t)字母换成大写的R
>>> str='ghostwu:hi,nice to meet you!' >>> re.sub( r'[r-t]', 'R', str ) 'ghoRRwu:hi,nice Ro meeR you!' >>>
>>> str=r'jfsdaft jdfasfcxvt jfdsafdast' >>> pattern=r'j.*t?' >>> re.sub( pattern, 'javascript', str ) 'javascript' >>> re.subn( pattern, 'javascript', str ) ('javascript', 1)
subn:结果中多了一个数字,表示一共替换了多少次
split:切割
>>> ip='127.0.0.1' >>> ip.split( '.' ) ['127', '0', '0', '1'] >>> pattern='\.' >>> re.split( pattern, ip ) ['127', '0', '0', '1']
>>> str="hello, my name is ghostwu" >>> pattern=r'[\s,]' >>> re.split( pattern, str ) ['hello', '', 'my', 'name', 'is', 'ghostwu'] >>>
如果分割符号的形式不同,用正则的split是比较方便的
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash