2016-11-24 4 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\3\sfsdf\sdfsd\)

任意のアイデアのためにのみパスを選択したいと思います m2et (\Pending\1\sfsdf\sdfsd\eewrwe.movRTrdgdgdgdfx:\sdfsdfs\Pending\2\sfsdf\sdfsd\eewrwe.3gpGFDSDSx:\sdfsdfs\Pending\3\sfsdf\sdfsd\).のための最後の"\"で終わりますか?

答えて

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

先読みでは、それを否定する必要があります。

デモをご覧ください。

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

+0

完璧!どうもありがとう。それは素晴らしい作品です。 –

+0

@MiroslavFlochはこの仕事をしませんでしたか? – vks

+0

もう一度、ありがとう。もう1つの問題があります: "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 「\ Pending'DDDDD」のみ選択する必要がありますが、この場合は「\ Pending \ DDDDD \ 20160604170127.m2ts」/ > < PARAM NAME = "AEFF_VIDEO_USERDATA_AUTO_FIX_FLAG" VALUETYPE = "UNSI"が選択されています。 –

関連する問題