为什么我不做这个正则表达式?

时间:2013-07-12 10:19:43

标签: python regex

我有一个关于正则表达式的问题...... Python可以执行下一部分代码,但如果我更改了最终表达式,我就无法运行代码。

在最后一行

from bs4 import BeautifulSoup
import urllib2
import re

url = 'http://www.ebay.es/itm/IMN-DE-NEVERA-DE-LA-CERVEZA-BUDWEISER-/281134822561'    #raw_input('Dime la url que deseas: ')    
code = urllib2.urlopen(url).read();
soup = BeautifulSoup(code)
tag = soup.find('span', {'class' : "vi-is1-t"}).contents[0]
print tag
print re.search('[\d*]+:[\d*]+:\d*' , tag).group() #If I put '[\d*]+:[\d*]+:[\d*]' not run 

1 个答案:

答案 0 :(得分:5)

一个[...]字符类中的任何字符都是该类的一部分:

[\d*]

匹配数字文字*星号。如果您想匹配0位或更多位数,请将星号放在类之外:

[\d]*

此时您不需要使用[..],因为\d本身就是一个类:

\d*

前两个模式使用+(1个或更多),因此这些模式匹配1个或多个数字星号。

您想要匹配的是:

print re.search('\d+:\d+:\d+' , tag).group()

甚至:

print re.search('\d{2}:\d{2}:\d{2}' , tag).group()

每个只匹配2位数。

相关问题