使用RegEx

时间:2019-03-25 20:38:07

标签: regex python-3.x

我正在处理包含txt文件的tar.gz文件中的文件,并尝试提取其TarInfo属性如下的相关member.name对象的文件名:

aclImdb/test/neg/1026_2.txt
aclImdb/test/neg/1027_5.txt
...
aclImdb/test/neg/1030_4.txt

我编写了以下代码,该代码显示字符串test/neg/1268_2

regex = '\/((?:[^/]*/).*?)\.'
with tarfile.open("C:\\Users\\Orestis\\Desktop\\aclImdb_v1.tar.gz") as archive:
    for member in archive.getmembers():
         if member.isreg():
         m = re.findall(regex, member.name)
         print(m)

如何修改正则表达式以仅提取文件名的1268_2部分?实际上,我想在"/"的第3次出现之后和"."的第1次出现之前提取字符串。

1 个答案:

答案 0 :(得分:2)

您可以对此进行硬编码:

.*?\/.*?\/.*?\/(.*?)\.

更优雅的是:

(.*?\/){3}(.*?)\.

您可以简单地更改3以适合您的样式。 (请注意,您要的组是2美元)