2016-08-01 7 views
1

正規表現を作成して3番目の区切り文字 "/"を見つけようとしています。一致するものが見つかった場合は、その前に全体の文章を取り、残りを削除します。Regexが私のために働いていない

black/white/green/blue/delta/orange/yellow/pink...(n) 

結果は、私はこの(.*(\/{2,3}))を試みたが、それはうまくいきませんでした

black/white/green 

でなければなりません。

+0

* *動作しなかったことを意味しますか? –

+0

こんにちは私は最後のノード "/"を削除して結果を修正しました。私を助けてください。私は自分で試しましたが、失敗しました。 – Mask

+0

私はあなたが後ろにスラッシュを入れずに望む部分文字列を得たいと思う。 '^([^ \ /] *(?:\/[^ \ /] *){2})。*'を試してください。 –

答えて

3

(.*(\/{2,3}))はすべての文字(改行以外の文字)と一致し、2つまたは3つの/シンボルがマッチ全体をグループ1にキャプチャし、フォワードスラッシュをグループ2にマッチさせます。文字列の始まりから、行の最後の2または2の/シンボルまで効果的に一致します。

あなたは

^((?:[^\/]*\/){3}).* 

を使用し、$1後方参照に置き換えることができます。

.があまりにも、改行を一致させるためregex demo

を入力し、正規表現エンジンによっては、DOTALL修飾子が必要になる場合があります参照してください。

^((?:[^\/]*\/){3})に使用すると、部分文字列と一致することにご注意ください。

また、未処理のプログラミングコードにアクセスできる場合は、文字列を/で分割し、最初の3つの要素を取り出して、/に戻します。

+1

それは多くの助けになります。 – Mask

+1

ウィクショーありがとうございました。ありがとう、トン! – Mask

1

この方法を試してください。

^((?\w+ \/){3}) 

説明:

- それは /(_ちょうどここマーキング、スペースである)が、最初の単語がであるために一致しています(\ワット+ /?)行の先頭には、単語自体の前にスペースが含まれていないので、 '?'最初のスペースの後に、オプションであることを意味します。 {3}はこのグループを見つけることを意味します/occuring 3 times(less than、larger) これはすべてf.eに一致しないように^()で囲まれています。行の途中で3回発生します。

+0

私はそのような迅速な答えを期待していませんでした。あなたのコードを説明できるのであれば、本当に感謝しています。上に書かれたものだけ。 – Mask

関連する問題