我正在尝试从符合某些条件的给定文件中提取路径: 例: 我有一个小文件,内容类似于:
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)
答案 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']