2008-12-10 22 views
6

मैं एक HTML फ़ाइल से कुछ संस्करण संख्याओं को निकालने के लिए re.findall() का उपयोग कर रहा:अजगर regex findall संख्या और डॉट्स

>>> 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 नहीं हो सकता है, इसलिए मैं regex में बस ज़िप नहीं कर सकता। अंत

मैं चाहता हूँ:

['0.2.1', '0.2.1'] 

किसी को भी उपयोग करने के लिए एक बेहतर regex का सुझाव कर सकते हैं? :)

उत्तर

12
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 . 
+0

महान एक बहुत काम करता है, धन्यवाद! – Ashy

+0

यह संभवतः \ d + होना चाहिए यदि संख्या 9 –

+0

से अधिक हो सकती है। मैं इसे जोड़ दूंगा, धन्यवाद। – Tomalak

संबंधित मुद्दे