python - 将非常长且复杂的版本号与python中的正则表达式匹配
问题描述
我有很多这样的台词。
some text some more text v3.1.0-beta.4 more & more text
some text some v2 build.3 some more text more & more text
some text some v21.1.23456.551436a4 alpha.4 some more text v16.1.2 more & more text
版本号是:
v3.1.0-beta.4
v2 build 3
v21.1.23456.551436a4 alpha.4 and v16.1.2
问题是我的版本号中可以有 beta 或 build 或两者都没有。版本号的可变长度。
这就是我现在拥有的,这只能匹配数字。
\d+(?:\.\d+)+
如何在给定行中搜索一个或多个版本号的存在,如上图所示?
解决方案
你可以试试这个正则表达式:
\bv[\d+]+[\w.]*(?:[-\s]+(?:alpha|beta|build)[\w.]*)?
图案细节:
\bv
v
:在单词边界之后匹配[\d+]+
: 匹配 1+ 位或点字符[\w.]*
: 匹配 0 个或多个单词或点字符(?:[-\s]+(?:alpha|beta|build)[\w.]*)?
: 以空格或连字符开头,可选匹配alpha|beta|build
部分后跟 0 个或多个单词或点字符
推荐阅读
- sql-server - TFS 数据库增长迅速
- android - 如何在迁移期间删除未被任何其他对象引用的 Realm 对象?
- javascript - 如何获取指向 javascript 对象属性的链接数
- r - 过滤(dplyr)数据帧的R str函数
- swift - Xcode设置标签的文本来自另一个viewController传递的变量导致崩溃
- python - 如何使用 Spidermon 进行 Scrapy 历史输出比较
- spotfire - 如何使用 IronPython 将使用 Spotfire Consumer 修改的分析保存回库?
- java - 如何在拦截器中获取控制器类名以进行日志记录
- access-token - Azure API 管理 - 如何刷新访问令牌后端 API?
- php - 无法从 XAMPP PHP 运行 Python 脚本