gpt4 book ai didi

Python 正则表达式 re.compile() 匹配字符串

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:14 29 4
gpt4 key购买 nike

我正在尝试通过 python 正则表达式从字符串中获取版本号...

给定文件名:facter-1.6.2.tar.gz

当,在循环内:

import re
version = re.split('(.*\d\.\d\.\d)',sfile)
print version

如何将 1.6.2 位转换为版本

最佳答案

两个逻辑问题:

1) 因为你只想要 1.6.2 部分,你不想在第一个 \d 之前捕获 .* 部分,所以它在外面括号。

2) 由于您只想匹配有问题的模式并使用 re. 拆分 没有意义。相反,请使用 re.match。这将为您提供一个 Match 对象,您可以使用它的 .group() 方法来获取实际匹配的文本。 “group 0”是整个匹配模式,“group 1”是第一组括号内的内容匹配的内容,等等。

>>> re.match('.*(\d\.\d\.\d)', 'factor-1.6.2.tar.gz').group(1)
'1.6.2'

尽管正如其他答案所表明的那样,无论如何匹配 .* 部分实际上没有意义,因为我们可以改为搜索仅由部分组成的字符串我们想要。这将在字符串中的任何位置查找模式(匹配预计它在开头)。由于我们不需要括号来使模式符合逻辑,并且因为我们现在要使用整个匹配部分,所以我们也不再需要括号。

>>> re.search('\d\.\d\.\d', 'factor-1.6.2.tar.gz').group(0)
'1.6.2'

关于Python 正则表达式 re.compile() 匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012320/

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