python re 正则表达式

import re

result1 = re.match('\d+', '1sssda22wdasfsa') # 匹配开头
print type(result1)
print result1
if result1:
print result1.group()
else:
print 'nothing'

result2 = re.search('\d+', 'ssss333dawd44asfsa') # 找到第一个匹配
print type(result2)
print result2
if result2:
print result2.group()
else:
print 'nothing'

result3 = re.findall('\d+', 'ssss333dawd44asfsa') # 找到所有匹配,输出列表
print type(result3)
print result3

a = 'ssss123dawd45867asf956sa'
result4 = re.compile('\d+')
print result4.findall(a) # 相比result3少了一次编译('\d')的过程,效率更高

result5 = re.search('(\d+)\w*(\d+)', a)
result6 = re.search('(\d+)dawd(\d+)', a)
print result5.group(), result6.group()
print result5.groups(), result6.groups()

ip = 'inet 192.168.112.130/24 brd 192.168.112.255 scope global eth0'
print re.findall('(?:\d{1,3}\.){3}\d{1,3}', ip)
print re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}', ip)


输出:
  

<type '_sre.SRE_Match'>

<_sre.SRE_Match object at 0x000000000269A718>
1
<type '_sre.SRE_Match'>
<_sre.SRE_Match object at 0x000000000269A780>
333
<type 'list'>
['333', '44']
['123', '45867', '956']
123dawd45867asf956 123dawd45867
('123', '6') ('123', '45867')
['192.168.112.130', '192.168.112.255']
['192.168.112.130', '192.168.112.255']

 

. 匹配任意字符,换行符\n除外
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或一次
.* 贪心算法
.*? 非贪心算法
() 括号内的数据作为结果返回,分组

{n}  匹配n次

{n,m} 匹配n到m次


findall 匹配所以符合规律的内容,返回包含结果的列表

search 匹配并提取第一个符合规律的内容,返回一个正则表达式对象(obiect)

sub 替换符合规律的内容,返回替换后的值

\d 数字
+ >=1
\w 字符
\t 制表符

 

posted @ 2016-05-28 14:40  3one  阅读(232)  评论(0编辑  收藏  举报