使用python

时间:2016-12-07 22:46:36

标签: python regex

我正在尝试从符合某些条件的给定文件中提取路径: 例: 我有一个小文件,内容类似于:

contentsaasdf /net/super/file-1.txt othercontents...
data is in /sample/random/folder/folder2/file-2.txt  otherdata...
filename  /otherfile/other-3.txt somewording

我想从文件中提取包含 file - * .txt 的路径。

在上面的示例中,我需要以下路径作为输出

/net/super/file-1.txt
/sample/random/folder/folder2/file-2.txt

Python代码的任何建议? 我正在尝试正则表达式。但是面对多个文件夹等的问题,例如:

 FileRegEx = re.compile('.*(file-\\d.txt).*', re.IGNORECASE|re.DOTALL)

2 个答案:

答案 0 :(得分:1)

您不需要.*只需正确使用字符类:

r'[\/\w]+file-[^.]+\.txt'

[\/\w]+将匹配任何单词字符和/的组合。 [^.]+将匹配除dot之外的任何字符组合。

演示:

https://regex101.com/r/ytsZ0D/1

请注意,此正则表达式可能是一般的,在这种情况下,如果要排除某些情况,可以根据需要在字符类或其他正确模式中使用^

答案 1 :(得分:0)

试试这个:

import re

re.findall('/.+\.txt', s)
# Output: ['/net/super/file-1.txt', '/sample/random/folder/folder2/file-2.txt', '/otherfile/other-3.txt']

<强>输出:

>>> import re
>>> 
>>> s = """contentsaasdf /net/super/file-1.txt othercontents...
... data is in /sample/random/folder/folder2/file-2.txt  otherdata...
... filename  /otherfile/other-3.txt somewording"""
>>> 
>>> re.findall('/.+\.txt', s)
['/net/super/file-1.txt', '/sample/random/folder/folder2/file-2.txt', '/otherfile/other-3.txt']