2016-11-24 20 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 \「被選中。 –

相關問題