2013-07-12 6 views
-2

У меня проблема с регулярным выражением ... 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

Почему вы пытаетесь изменить выражение, если оно работает? Какова ваша цель в изменении кода? – JDB

ответ

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 цифры каждый.

Смежные вопросы