ここでは単純な正規表現を使用します。
3番目の「/」の後にあるものを取得する1つの方法は、その前のすべてのものと一緒に捨てるだけです。
基本的な考え方:
"/a/b/c/d/e/f".replace(/.*?\/.*?\/s.*?\//, "")
// -> "c/d/e/f"
繰り返しを減らすための代替案#1:
"/a/b/c/d/e/f".replace(/(?:.*?\/){3}/, "")
代替案#2、入力に改行を含めることができる場合:
"/a/b/c/d/e/f".replace(/(?:[^\/]*\/){3}/, "")
*?
修飾子は「貪欲にならない」という意味なので、を.
スキップしないで/
ください。負の文字クラスの場合は、[^\/]
一致することはないため、必要ありません/
。
もちろん、これは「あまり一般的ではない」形式で記述できます。これは、実際の目的はURIのプロトコル/ドメイン部分を削除することだけであるためです(/
'の数は観察された関係にすぎません)。
"http://foo/a/b/c/d/e/f".replace(/https?:\/\/[^\/]*\/?/i, "")
// -> "a/b/c/d/e/f"
最後\/
は?
その後にあるので、「http:// foo」の場合は「」を返し、それが何らかの奇妙な理由で使用された場合i
に一致することに注意してください(もちろん完全にオプションです)。HTTP://
"HTTPS://foo".replace(/https?:\/\/[^\/]*\/?/i, "")
// -> ""
ハッピーコーディング!
注:上記の正規表現はすべて、質問で述べられているように、3日以降にコンテンツを抽出します。結果に3番目を含める/
には、少し変更する必要があります。また、XYの質問をしないようにすることも役立ちます。/