2016-11-24 27 views
1

您能否帮我解决下面的正则表达式问题(对于Python环境)?如何使用正则表达式选择特定扩展名的文件路径

a string = hfhfdgdx:\sdfsdfs\Pending\1\sfsdf\sdfsd\eewrwe.movRTrdgdgdgdfx:\sdfsdfs\Pending\2\sfsdf\sdfsd\eewrwe.3gpGFDSDSx:\sdfsdfs\Pending\3\sfsdf\sdfsd\eewrwe.m2etdfgdf 

regex pattern = \\Pending(.*?\\)*(?=.*m2et) 

选择与"\Pending"的开始,选择所有直到最后"\"为m2et扩展。但它与第一​​"'\"开始,并以最后"\"为m2et (\Pending\1\sfsdf\sdfsd\eewrwe.movRTrdgdgdgdfx:\sdfsdfs\Pending\2\sfsdf\sdfsd\eewrwe.3gpGFDSDSx:\sdfsdfs\Pending\3\sfsdf\sdfsd\). 我想选择的m2et (\Pending\3\sfsdf\sdfsd\)

任何想法,只是路径结束?

回答

1
(\\Pending\\(?:(?!\bPending\b).)*\\)(?=[^\\]*m2et) 

您将不得不否认Pending在前瞻中。

请参阅演示。

https://regex101.com/r/ota4md/2

+0

完美!非常感谢。它效果很好。 –

+0

@MiroslavFloch没有做这项工作? – vks

+0

再次感谢,vks。但还有一个问题:当正则表达式应用于字符串,其中“m2ts”出现更多时间时,它将选择文本直到最后一个“\”,它可以在“\ Pending ...”路径之外。一些示例文本:VALUE = “AAAAA \ BBBBB \ CCCCC \待定\ DDDDD \ 20160604170127.m2ts”/ > < PARAM NAME = “AEFF_VIDEO_USERDATA_AUTO_FIX_FLAG” VALUETYPE = “UNSI \ GNED_INT” VALUE = “0”/ > < PARAM VALUE =“20160604093325 .m2ts“ 只应选择”\ Pending'DDDD \“,但在这种情况下,”\ Pending \ DDDDD \ 20160604170127.m2ts“/ > < PARAM NAME =”AEFF_VIDEO_USERDATA_AUTO_FIX_FLAG“VALUETYPE =”UNSI \“被选中。 –

相关问题