我有一个这样的文件列表:aaa.txt bbb.doc ccc.gjf ddd.exe.我想要文件扩展名是gjf.由于某些原因,此文件不能是文件列表中的第一个或最后一个文件.换句话说,文件前后必须有空格.但是,我尝试了许多正则表达式,无法获取该文件:
pattern = re.compile(r'\s+(.*?gjf) ')
print pattern.findall('aaa.txt bbb.doc ccc.gjf ddd.exe')
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)result: ['bbb.doc ccc.gjf']
pattern = re.compile(r' (.*?gjf) ')
print pattern.findall('aaa.txt bbb.doc ccc.gjf ddd.exe')
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)result: ['bbb.doc ccc.gjf']
我该怎么办?
我不认为正则表达式对于这个问题是完全必要的:
s = 'aaa.txt bbb.doc ccc.gjf ddd.exe'
final_data = [i for i in s.split()[1:-1] if i.endswith('.gjf')]
Run Code Online (Sandbox Code Playgroud)
输出:
['ccc.gjf']
Run Code Online (Sandbox Code Playgroud)
但是,如果你真的需要正则表达式,你可以试试这个:
import re
s = 'aaa.txt eee.gjf bbb.doc ccc.gjf ddd.exe'
final_data = re.findall("(?<!^)[a-zA-Z0-9]+\.gjf(?!$)", s)
Run Code Online (Sandbox Code Playgroud)
输出:
['eee.gjf', 'ccc.gjf']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |