python - 如何使用正则表达式而不是其他包将版本字符串与最低版本号匹配?
问题描述
注意:这个问题不是关于解析版本字符串的可用库,也不是关于如何编写一般的正则表达式模式。我必须将模式输入 API 调用,所以使用另一个库对我来说不是一个选项。
我需要匹配一个版本字符串,例如 eg"9.3"
或"12.5"
针对最低版本号"11.2"
。即"9.9"
or"9.10"
不能匹配 while "11.2"
,"11.10"
or "20.0"
should 。
在 Pythonre
中是否有合理的方法来实现这一点?使用这样的方法 会导致这样的表达式:
r"^(([2-9]\d|1[2-9])\.\d{1,}|11\.([2-9]|\d{2,}))(\.\d+)*$"
这是硬核阅读和零灵活性。
在 2020 年,难道没有更简单或更通用的方式来处理 Python 中正则表达式中的十进制数(不是数字)吗?
也许表达式生成器采用更抽象的描述并生成表达式?
解决方案
要匹配所有大于或等于 的整数和十进制数11
,请使用以下正则表达式:
^[1-9][1-9](\d+)?\.?\d*
^
字符串的开头。[1-9]
第一个数字必须在1
to9
(包括)范围内。[1-9]
第二位数也一样。(\d+)?
后面可能会有更多的数字。\.?
后面可能跟一个小数。\d*
小数部分可能后跟数字。
推荐阅读
- javascript - 为什么 JSDOM 将 xmlns="" 附加到 SVG
生成outerHTML时的节点? - android - UTF 以外的 Android Cordova 应用程序文件编写器代码页
- dataframe - DataFrame 对象不可使用 AIF360 调用
- c# - 在 LINQ 查询中后期绑定左外连接后,如何在查询结果中获取字段?
- c# - csharp 中的 JSON AND OR 运算符
- .net - 在不同服务器中使用相同密钥的 RSA 加密不起作用
- r - 在连接之前对两列的元素进行排序
- javascript - 获取从初始路径托管文件的文件夹名称的列表
- python - 如何在for循环中创建多个函数?
- python - 如何在没有 zerodivisionerror 的情况下在输出中具有无穷大斜率?