Rubyの正規表現を使用して、文字列内のすべての同じ数字をキャッチすることは可能ですか?私は正規表現に精通していません。
つまり:正規表現 "1112234444"
生産する ["111", "22", "3", "4444"]
私は知っている、私は使用できる (d)(1*)
、しかし、それは私に各試合で2つのグループのみを与えます。 ["1", "11"], ["2", "2"], ["3", -], ["4", "444"]
各試合で1つのグループを取得するにはどうすればよいですか?ありがとう。
回答:
回答№1は8ここで、これを試してみましょう:
((d)2*)
回答№2のための5
この正規表現を使用することができます
((d)2*)
グループ1は必要な値をキャッチします
回答№3の場合は1
私の最初の簡単な答えは、コードの説明がないことで正当に批判されました。だからここに」、すべての点でより良い別のものです;-)
実行する要素が数字が必要で、手作業で簡単に列挙できます。したがって、「ゼロの実行、または1の実行、...または9の実行」を意味する読み取り可能な正規表現を作成します。そして、私たちは仕事に適切な方法を使用し、 文字列#スキャン:
irb> "1112234444".scan(/0+|1+|2+|3+|4+|5+|6+|7+|8+|9+/)
=> ["111", "22", "3", "4444"]
記録のために、ここに私の最初の答えがあります:
irb> s = "1112234444"
=> "1112234444"
irb> rx = /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
=> /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
irb> s.split(rx).reject(&:empty?)
=> ["111", "22", "3", "4444"]