如何编写解析版本号的正则表达式。我要像匹配的数字: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