我正在try 将版本子字符串与v#.##.#或Version#.##.#形式的正则表达式进行匹配.版本号的数量并不重要,v或版本后可能有也可能没有空格.这就是我到目前为止一直在try 的,但在某些情况下不匹配:

\bv\s?[\d.]*\b|\bversion\s?[\d.]*\b

例如,它匹配版本6.2.11,但不匹配C2000_v6.2.11.我对regex比较陌生,不确定我在这里做错了什么.我很肯定还有更好的方法来做"或"部分,所以任何帮助都将不胜感激!

推荐答案

首先,通过实现一个可选的非捕获组,您的模式可以大大缩短,这样就可以在不需要更改的情况下匹配vversion.

接下来,第一个\b需要单词边界,但版本信息在第二个预期匹配中的_之后开始,并且_是单词char.

您可以使用

(?<![^\W_])v(?:ersion)?\s?[\d.]*\b

请看regex demo.

Details:

  • (?<![^\W_])-紧靠左侧,不能有字母或数字
  • v-v个字符
  • (?:ersion)?-可选的ersion字符串
  • \s?-一个可选的空格
  • [\d.]*-零个或多个数字或点
  • \b-一个词的边界.

Python相关问答推荐

连接两个具有不同标题的收件箱

对于一个给定的数字,找出一个整数的最小和最大可能的和

删除所有列值,但判断是否存在任何二元组

我如何使法国在 map 中完全透明的代码?

在np数组上实现无重叠的二维滑动窗口

ThreadPoolExecutor和单个线程的超时

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

跳过嵌套JSON中的级别并转换为Pandas Rame

基于Scipy插值法的三次样条系数

Flask运行时无法在Python中打印到控制台

并行编程:同步进程

根据Pandas中带条件的两个列的值创建新列

如何使用matplotlib查看并列直方图

如何训练每一个pandaprame行的线性回归并生成斜率

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

在matplotlib中重叠极 map 以创建径向龙卷风图

上传文件并使用Panda打开时的Flask 问题

启动线程时,Python键盘模块冻结/不工作

函数()参数';代码';必须是代码而不是字符串