ユーザーがフォルダー階層内のアイテムの「ワイルドカード」パスと、アイテムがそのパスに一致したときに実行される関連アクションを指定できるようにする機能に取り組んでいます。例えば:
Path Action
----------- -------
1. $/foo/*/baz include
2. $/foo/bar/* exclude
上記の例では、アイテム at$/foo/bar/baz
は両方のアクションに一致します。これを踏まえて、最初のワイルドカード文字が出現する「深さ」に基づいて、ワイルドカードパスの特異性の粗いスコアを提供したいと思います。最も深さのあるパスが勝ちます。重要なのは、*
スラッシュ ( /*/
) で区切られたもののみがワイルドカードとして許可され (最後に then がある場合を除く/*
)、パスのさまざまなポイントで任意の番号を指定できることです。
TL;DR;
したがって、最初のスラッシュより前のスラッシュの数をカウントする正規表現が適していると思います*
。ただし、いくつかの理由により、パスにワイルドカードがない場合、スラッシュの一致はゼロになります。私は次の否定的な後読みをしています:
(?<!\*.*)/
これは、ワイルドカードがある場合 (たとえば、上記のパス #1 に 2 つのスラッシュが一致し、#2 に 3 つのスラッシュが一致する場合) は正常に機能しますが、ワイルドカードがない場合は、すべてのスラッシュに自然に一致します。どれにも一致しないのは簡単なステップだと確信していますが、さびた正規表現スキルのために行き詰まっています。
理想的には学術的な観点から、単一の正規表現でこれをキャプチャできるかどうかを確認したいと思いますが、問題に対するよりエレガントな解決策としてボーナスポイントが提供されます!