2008-12-10 11 views
6

Używam re.findall(), aby wyodrębnić kilka numerów wersji z pliku HTML:Python numery regex FindAll i kropki

>>> import re 
>>> text = "<table><td><a href=\"url\">Test0.2.1.zip</a></td><td>Test0.2.1</td></table> Test0.2.1" 
>>> re.findall("Test([\.0-9]*)", text) 
['0.2.1.', '0.2.1', '0.2.1'] 

ale chciałbym dostać tylko te, które nie kończą się kropka. Nazwa pliku może nie zawsze być .zip, więc nie mogę po prostu wstawić .zip w regex.

Chcę skończyć z:

['0.2.1', '0.2.1'] 

Może ktoś sugerują lepsze regex w użyciu? :)

Odpowiedz

12
re.findall(r"Test([0-9.]*[0-9]+)", text) 

lub nieco krócej:

re.findall(r"Test([\d.]*\d+)", text) 

Nawiasem mówiąc - nie musi uciec z kropka w klasy postaci:

[\.0-9] // matches: 0 1 2 3 4 5 6 7 8 9 . \ 
[.0-9] // matches: 0 1 2 3 4 5 6 7 8 9 . 
+0

Działa świetnie, dzięki dużo! – Ashy

+0

Prawdopodobnie powinno być \ d + jeśli liczby mogą być większe niż 9 –

+0

Prawda. Dodam to, dzięki. – Tomalak

Powiązane problemy