PEP 440列出了Python软件包的版本字符串可接受的格式。
这些可以很简单,例如: 0.0.1
还是复杂的,例如: 2016!1.0-alpha1.dev2
什么是可用于查找和验证此类字符串的合适正则表达式?
我有同样的问题。这是我能找到的最彻底的正则表达式模式。PEP440的参考部分中链接到包装库的代码库。
pip install packaging
要仅访问模式字符串,可以使用全局
from packaging import version
version.VERSION_PATTERN
参见:https : //github.com/pypa/packaging/blob/16.7/packaging/version.py#L159
# Deliberately not anchored to the start and end of the string, to make it
# easier for 3rd party code to reuse
VERSION_PATTERN = r"""
v?
(?:
(?:(?P<epoch>[0-9]+)!)? # epoch
(?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
(?P<pre> # pre-release
[-_\.]?
(?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
[-_\.]?
(?P<pre_n>[0-9]+)?
)?
(?P<post> # post release
(?:-(?P<post_n1>[0-9]+))
|
(?:
[-_\.]?
(?P<post_l>post|rev|r)
[-_\.]?
(?P<post_n2>[0-9]+)?
)
)?
(?P<dev> # dev release
[-_\.]?
(?P<dev_l>dev)
[-_\.]?
(?P<dev_n>[0-9]+)?
)?
)
(?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
"""
当然,此示例特定于Python的正则表达式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句