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 制表符