2016-09-26 8 views
1

正規表現を書いて、特定の親の子パス以外のすべてのフォルダパスを見つける必要があります。例えば、私の文字列は、次のいずれかの項目が含まれており、パスがfolder1のと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\/])+)$/を使用しています。しかし、それは4番目の文字列と一致したいと思っている間も、文字列3と6にマッチします。私の問題は、/文字の後にfolder1とfolder3で文字列が終わるところです。正規表現で可能ですか? 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"にマッチします。あなたは文字列の最後を許可する必要があります、先読みのその/(?:/|$)と置き換えてください。

あなたはちょうど​​これらの値に必要がある場合[\w\/]+$はここに冗長であるかもしれないことをregex demo

を参照してください

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

を使用することができます。

+1

問題がどこで発生したのか分かりましたが、解決方法はわかりませんでした。あなたは私をたくさん助けました。再度、感謝します。 –

関連する問題