首页 > 解决方案 > 使用正则表达式在文件名末尾提取版本号

问题描述

我有一个文件名列表,其中一些以版本号结尾。我正在尝试使用单个正则表达式提取版本号:

filename.doc --> NULL
filename.1.0.doc --> 1.0
filename.2.0.pdf --> 2.0
filename.3.0.docx --> 3.0

到目前为止,我发现以下正则表达式将其与扩展名一起提取:

[0-9]+\.[0-9]+\.(docx|pdf|rtf|doc|docm)$

但我宁愿没有扩展名。所以我正在搜索的是[0-9]+\.[0-9]+字符串中最后一次出现点之前的位置,但我找不到如何做到这一点。

谢谢你的帮助!

标签: pythonregexstring

解决方案


我正在搜索的是[0-9]+\.[0-9]+字符串中最后一次出现点之前的内容

您可以使用

r'[0-9]+\.[0-9]+(?=\.[^.]*$)'

请参阅正则表达式演示

细节

  • [0-9]+\.[0-9]+- 1+ 位.和 1+ 位
  • (?=\.[^.]*$)- 一个积极的前瞻,需要., 然后是 0+ 个字符,而不是.字符串的结尾,紧接着当前位置的右侧。

请参阅正则表达式图

在此处输入图像描述


推荐阅读