如何編寫解析版本號的正則表達式。我要像匹配的數字:1.000
,1.0.00
,1.0.0.000
但不是整數1
,10
,100
解析版本號的正則表達式
回答
大我想你想這樣的事情,
(?:(\d+\.[.\d]*\d+))
OR
(?:(\d+\.(?:\d+\.)*\d+))
>>> import re
>>> str = 'foobar 1.000, 1.0.00, 1.0.0.000 10 100 foo bar foobar'
>>> m = re.findall(r'(?:(\d+\.(?:\d+\.)*\d+))', str)
>>> m
['1.000', '1.0.00', '1.0.0.000']
這匹配'1..1'。 –
@AshBurlaczenko這個['(?:(\ d + \。(?:\ d \。)* \ d +))'](http://regex101.com/r/fU3fH9/11)怎麼樣? –
新的不匹配,'1.12.1'。 –
澄清:我假設你想解析的號碼,不只是匹配他們。
爲什麼使用正則表達式時,一個簡單的分裂將工作得很好?
'1.3.4.*'.split('.') # => ['1', '3', '4', '*']
如果你想確保有字符串中的至少一個點,檢查數組的長度,以確保它是大於1
想要用逗號分開,並且不希望沒有至少一個點的匹配... –
@TonyHopkinson,它在哪裏說他們想用逗號分隔?如果有超過1個部分,分割會告訴你。 –
@Tonyhopkinson這很簡單,只需檢查結果數組的長度,看看它是否大於1。 – RevanProdigalKnight
這並不直接回答您的問題,但它假設您希望此功能比較不同版本的應用程序。
你可以做到這一點使用distutils.version
(該文檔是空的,但我們可以發現在source函數文檔)
幾個例子來幫助理解我們在做什麼:
>>> from distutils.version import LooseVersion, StrictVersion
>>> LooseVersion("1.0.1") < LooseVersion("1.0.2")
True
>>> StrictVersion("1.0.1") < StrictVersion("1.0.2")
True
>>> LooseVersion("1.0.10") < LooseVersion("1.0.1")
False
有什麼LooseVersion
和StrictVersion
之間的區別?隨着LooseVersion
你可以比較 「真實世界」 的版本是這樣的:
>>> LooseVersion("2.1-rc1") < LooseVersion("2.2")
True
而StrictVersion
不允許字母字符
>>> StrictVersion("2.1-rc1") < StrictVersion("2.2")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\distutils\version.py", line 40, in __init__
self.parse(vstring)
File "C:\Python27\lib\distutils\version.py", line 107, in parse
raise ValueError, "invalid version number '%s'" % vstring
ValueError: invalid version number '2.1-rc1'
- 1. Python 2.7版解析正則表達式
- 2. 正則表達式{}解析
- 3. 正則表達式解析
- 4. 正則表達式解析
- 5. 正則表達式 - 解析Csv文本
- 6. Ruby正則表達式文本解析
- 7. 解析文本與正則表達式
- 8. 解析與正確的括號,正則表達式?
- 9. c#正則表達式列表解析
- 10. URI解析的正則表達式
- 11. 解析數據的正則表達式
- 12. Python的正則表達式解析器
- 13. 解析javascript中的正則表達式
- 14. 正則表達式解析的queryString
- 15. xml解析中的正則表達式
- 16. 正則表達式解析的robots.txt
- 17. 的Java ::解析正則表達式
- 18. syslog的Python正則表達式解析
- 19. 解析的正則表達式:: number :: sentence ::
- 20. PHP的正則表達式解析行
- 21. 解析.net中的正則表達式
- 22. Python的正則表達式解析
- 23. StringBuilder的和正則表達式解析
- 24. Java的正則表達式解析URL
- 25. Scala的正則表達式解析URL
- 26. (Ruby)的解析與正則表達式
- 27. 問題的正則表達式解析
- 28. java的正則表達式URL解析
- 29. 正則表達式匹配的版本號模式
- 30. 正則表達式沒有正確分解文件路徑的版本號
不清楚。給出一些你想要匹配什麼樣的例子,你不會有什麼? –
所以用逗號分隔,必須是數字或星號,然後必須包含一個點? –
@TonyHopkinson對不起,誰說了什麼關於逗號? – jforberg