1

特定の部分を抽出したい文字列があります:

元の文字列:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx

望ましい結果:/abc/d7_t/g-12/jkl/

文字列全体で文字数が異なる場合があります。アルファベット、数字、アンダースコア、ハイフンがあります。基本的には5番目の「/」以降の文字列をカットしたい

いくつかの正規表現を試しましたが、形式に誤りがあるようです。

4

3 に答える 3

3

正規表現以外のアプローチが受け入れられる場合は、次のようにします。

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)

動作するはずです。正規表現ほどコンパクトではありませんが、より明確に感じる人もいます。

于 2012-12-11T08:46:42.767 に答える
2

正規表現は次のようになります%r(/(?:[^/]+/){4})。この場合、スラッシュのエスケープを避けるために %r リテラル バージョンを使用することをお勧めします。エスケープされていないスラッシュは、フォーマット エラーの原因である可能性があります。

于 2012-12-11T08:47:24.217 に答える
1

「/」を除く任意の文字列に 4 回一致します:-

(\/[^\/]+){4}\/
于 2012-12-11T08:37:25.323 に答える