我有一个文件路径列表
l = ['C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\saisie\\saisieCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\recherche-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\import\\import-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\gestionCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompte\\gestionCompte-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCommunication\\tableauDeBord\\tableauDeBord.xml']
我需要获取与模式匹配的文件路径
pattern = '\\WEB-INF\\flows\\**\\*-flux.xml'
其中**
描述文件夹/目录的递归深度。
*
可能只描绘了一个文件夹。
如何编写正则表达式来获取与此模式匹配的文件路径?如果有一个*
,我应该如何概括?
预期输出应为
['C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\saisie\\saisieCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\import\\import-flux.xml',
答案 0 :(得分:3)
您的模式可以轻松转换为正则表达式:
r'\\WEB-INF\\flows\\.*\\.*-flux\.xml'
\\.*\\
在反斜杠(包括反斜杠)之间选择任何内容flux.xml
结尾的内容(请注意保护.
)。无需过滤反斜线或使用非贪婪,因为评估是从左到右进行的。像这样:
import re
l = ['C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\saisie\\saisieCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\recherche-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\import\\import-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\gestionCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompte\\gestionCompte-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCommunication\\tableauDeBord\\tableauDeBord.xml']
result = [x for x in l if re.search(r'\\WEB-INF\\flows\\.*\\.*-flux.xml',x)]
结果:
>>> result
['C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\saisie\\saisieCompteBo-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompteBo\\import\\import-flux.xml',
'C:\\src\\main\\webapp\\WEB-INF\\flows\\gestionCompte\\gestionCompte-flux.xml']