私はRubyを初めて使用していて、数字の最初の出現を検索するのに常にString.scan
を使用しています。返された値がネストされた配列であることは奇妙なことですが、私が望む値に対しては[0][0]
に行きます。 (私はそれが目的を持っていると確信しています、まだ私はそれをまだ使用していません)Rubyの文字列のスキャンとマッチの違いは何ですか
私はちょうどString.match
メソッドがあることを知りました。返された配列はネストされていないので、より便利に思えます。ここで
は最初、2の例でスキャンです:
>> 'a 1-night stay'.scan(/(a)?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
はその後、私はAPIをチェックしてきたが、私は本当に違いを区別することはできません、と一致
>> 'a 1-night stay'.match(/(a)?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
ですどちらも「パターンにマッチする」と言われています。
この質問は、単に好奇心のために、scan
ができることについては、match
はできません。 1つしか達成できない特定のシナリオのmatch
は下位ですか?