特定の部分を抽出したい文字列があります:
元の文字列:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
望ましい結果:/abc/d7_t/g-12/jkl/
文字列全体で文字数が異なる場合があります。アルファベット、数字、アンダースコア、ハイフンがあります。基本的には5番目の「/」以降の文字列をカットしたい
いくつかの正規表現を試しましたが、形式に誤りがあるようです。
特定の部分を抽出したい文字列があります:
元の文字列:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
望ましい結果:/abc/d7_t/g-12/jkl/
文字列全体で文字数が異なる場合があります。アルファベット、数字、アンダースコア、ハイフンがあります。基本的には5番目の「/」以降の文字列をカットしたい
いくつかの正規表現を試しましたが、形式に誤りがあるようです。
正規表現以外のアプローチが受け入れられる場合は、次のようにします。
s.split('/').take(n).join('/')+'/'
あなたs
の文字列の場合(あなたの場合:)/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
。
def cut_after(s, n)
s.split('/').take(n).join('/')+'/'
end
それで
cut_after("/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx", 5)
動作するはずです。正規表現ほどコンパクトではありませんが、より明確に感じる人もいます。
正規表現は次のようになります%r(/(?:[^/]+/){4})
。この場合、スラッシュのエスケープを避けるために %r リテラル バージョンを使用することをお勧めします。エスケープされていないスラッシュは、フォーマット エラーの原因である可能性があります。
「/」を除く任意の文字列に 4 回一致します:-
(\/[^\/]+){4}\/