1
私は、この「いくつかのテキスト!11.22.33」のような文字列をしたと私は文字列をパターンで分割するには?
"some text !11.22.33".scan(/!(\w+)/)[0].join.to_s
を呼び出したときにそれが唯一の「11」を返します。 "11.22.33"を返したいので、スキャン機能はドットをスキップしてすべての文字列を取ります。どのように私はそれを行うことができますか?
私は、この「いくつかのテキスト!11.22.33」のような文字列をしたと私は文字列をパターンで分割するには?
"some text !11.22.33".scan(/!(\w+)/)[0].join.to_s
を呼び出したときにそれが唯一の「11」を返します。 "11.22.33"を返したいので、スキャン機能はドットをスキップしてすべての文字列を取ります。どのように私はそれを行うことができますか?
あなたの文字列が、この形式で常にある場合は、単に正規表現のアプローチについて
"some text !11.22.33".partition('!').last
を使用するには、キャプチャとのマッチングを使用することができます:
"some text !11.22.33"[/!([\d.]+)/, 1]
詳細を参照してください。:
!
- リテラル!
シンボル([\d.]+)
- キャプチャグループ1:1桁以上の数字またはドット1
引数が出力するルビーを伝えるのみキャプチャ値別の正規表現は、/!(\d+(?:\.\d+)*)/
すなわち1桁以上をキャプチャし、次に.
と1+桁の0以上のシーケンスをキャプチャします(したがって、末尾のドットがある場合はキャプチャされません)。
素晴らしい!どうもありがとうございます! – ValeMarz
数字とドットが常に文字列の最後にある既知の形式の場合、 'partition'の代わりに' rpartition'を使用することができます: '' some text!11.22.33 ".rpartition( '!')。last' –