我有一個包含超過800萬個文件的驅動器,它是CRM系統的文件存儲區域。這些文件以特定的格式存儲,並且每個文件都應該在數據庫中具有匹配的記錄。然而,由於一些非常差的安全性,世界和妻子也一直在同一個驅動器上創建文件。我的任務是確定使用Powershell和正則表達式的無效文件。 典型有效的文件路徑將會是這個樣子:正則表達式需要匹配從文件名派生文件路徑的文件路徑。
P:\PERSON\06\19\09\619090.5577930.DOC
所有文件都被稱爲P驅動的:它包含四個子目錄叫:事件OPPORTUN,ORGANISA或個人。其中每一個都包含可變數目的子目錄,名稱範圍從00到99,文件名是由句點分隔的兩組數字,後跟擴展名。
我使用匹配這個模式的正則表達式是:
^P:\\(EVENT|OPPORTUN|ORGANISA|PERSON)\\(\d{2}\\)+\d+\.\d+\.\w{3,4}$
併發症是有效的文件也具有第一組中的文件名數字,這是子目錄路徑之間的關係這個:
刪除最後一位數字。
如果數字的長度現在是奇數,則添加前導零。
將結果數字分成兩對,應該是路徑。
因此,使用上面的例子:
第一組數字是:619090
刪除最後一個數字:61909
的長度爲奇數,以便添加一個前導零:061909
劃分成對:06 \ 19 \ 09
我的問題是這個邏輯可以合併到我的正則表達式中,有沒有辦法使用forward或b ack參考?
感謝這個,你的解決方案是不完全正確,但我指出了正確的方向,因爲我不知道,你可以有非捕獲組。 –
@DaveSexton哦!你可能有多次出現的'\ d \ d \ /'。那麼,我很高興能以某種方式獲得幫助:)雖然看看你的正則表達式,但通過將'(\ d)(\ d)'分爲'(\ d \ d)'和你將只需要一個反向參考爲他們每個人:) – Jerry