gpt4 book ai didi

python - 匹配 PEP440 兼容版本字符串的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:25 24 4
gpt4 key购买 nike

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/21.3/packaging/version.py#L225-L254

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 风格的正则表达式的。

关于python - 匹配 PEP440 兼容版本字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com