Python регулярное выражение найти все цифры и точки - PullRequest
7 голосов
/ 10 декабря 2008

Я использую re.findall () для извлечения некоторых номеров версий из файла HTML:

>>> 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']

но я бы хотел получить только те, которые не заканчиваются точкой. Имя файла не всегда может быть .zip, поэтому я не могу просто вставить .zip в регулярное выражение.

Я хочу закончить с:

['0.2.1', '0.2.1']

Может кто-нибудь предложить лучшее регулярное выражение для использования? :)

1 Ответ

14 голосов
/ 10 декабря 2008
re.findall(r"Test([0-9.]*[0-9]+)", text)

или немного короче:

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

Кстати - вы не должны экранировать точку в классе символов:

[\.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 .
...