0
を返す[1]次のエラーが返されます。配列要素にアクセスするか、次の正規表現一致要素にアクセスし、該当するキャプチャを生じない場合、空の文字列
"".match(/(abc)/)[1]
次のエラーを返す:
NoMethodError: undefined method `[]' for nil:NilClass
これを実行するために、より簡潔な1行の実装がありますか?
result = "".match(/(abc)/).nil? ? "" : "".match(/(abc)/)[1]
私はマッチングコード**"".match(/abc/)**
を繰り返し、しかも安全に最初のキャプチャグループにアクセスしたり、結果として空の文字列で失敗することを必要としない解決策を探しています。
[明確になるように編集]
次の文字列は、一致は "123" になります。
"abc123def".match(/abc([0-9]*)/)[1] => "123"
と "ABCDEF" ""
'文字列#[]は'常にストリングのようなもののためであると推定されるが、それはまた、非常に柔軟です。 @ tadman確かに – tadman
。 – mudasobwa
明確でないことに対する謝罪。しかし、「abc123def」[/ abc([0-9] *)/] =>「abc123」 「abc123def」.match(/ abc([0-9] *)/)[1] => "123" –