2016-09-26 57 views
1

我需要編寫一個正則表達式來查找所有文件夾路徑,除了子節點以外的父路徑。例如,請考慮我的字符串包含以下項目之一,我想整個字符串如果路徑不是文件夾1和folder3的孩子相匹配:編寫正則表達式來匹配特殊類型的文件夾路徑

string 1: "/folder1/subfolder_0" 
string 2: "/folder1/" 
string 3: "/folder1" 
string 4: "/folder2/subfolder_0" 
string 5: "/folder3/subfolder_0" 
string 6: "/folder3" 

我使用正則表達式/ ^\/((?!(folder1|folder3)\/)([\w\/])+)$/實現我的匹配。但它也匹配字符串3和6,而我只想匹配第4個字符串。我的問題是字符串在沒有/字符後以folder1和folder3結尾的位置。正則表達式可能嗎?

+0

請格式化您的問題。有工具欄中的幫助 –

+0

對不起,@Denys。現在編輯這個問題。 –

+1

嘗試['/^(?!\/folder[13](?:\/|$))[\w\/]+$/'](https://regex101.com/r/xO8cU2/1) ,或者只是['/^(?!\/folder[13](?:\/|$))/'](https://regex101.com/r/xO8cU2/2) –

回答

1

^/((?!(folder1|folder3)/)([\w/])+)$正則表達式匹配"/folder1""/folder3",因爲你只有在folder1folder3後邊帶有/失敗的字符串匹配。您需要允許字符串結尾,用(?:/|$)替代前瞻中的第二個/

您可以使用

/^\/(?!folder[13](?:\/|$))[\w\/]+$/ 

regex demo

,如果你只是需要​​這些值[\w\/]+$可能是多餘的在這裏。

+1

好的,我知道問題出在哪裏,但我不知道如何解決。你幫了我很多。再次感謝。 –

相關問題