我有一个关于正则表达式的问题...... 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
答案 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位数。