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']

 

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

{n}  匹配n次

{n,m} 匹配n到m次


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

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

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

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

原文地址:https://www.cnblogs.com/3one/p/5537368.html