• 締切済み

Rubyについて

先ほども投稿したのですが質問が間違っていたので再投稿します。 scan(/\[(.*?)\]/)がどんなマッチングになるか教えていただけないでしょうか?

みんなの回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

文字列の中の[から始まり、次の]までに一致します。 中に()がありますので、()の中の正規表現が実際には取り出されます。 [と]は正規表現で使われる記号ですので\で文字だとと教えています。 また、.*?については.は任意の1文字、*でそれの0回以上の繰り返し、?は(*や+の後限定ですが)一番近い]に一致するという意味です。 a="jahfk[abc]kjf[mnl]hu" の場合は a.scan(/\[(.*?)\]/) で [["abc"], ["mnl"]]が返ってきます。 ?がない a.scan(/\[(.*)\]/) の場合はまた違った結果になります。すぐ後の]ではなくなります。 ruby 正規表現で検索するといっぱい出てきますので、それを参考に。

関連するQ&A