Ruby 正規表現で特定文字列から特定文字までを取得する

Rubyを使って特定の文字列から特定文字までを正規表現で取得したい。

例えば「こんにちは。私の名前は秘密です。また今度教えるね。」から

こんにちは。だけ取得したい場合です。

Rubyの正規表現で特定文字までを取得

「こんにちは。私の名前は秘密です。また今度教えるね。」の文字列の

「こ」から始まって「。」までを取得するサンプルです。

 

まず失敗例。

text = 'こんにちは。私の名前は秘密です。また今度教えるね。'
p text.scan(/こ.*。/)

どう取れるでしょうか?

「.*。」 の部分が何をさしているかというと、こから最後の「。」まで取得します。

結果は、

["こんにちは。私の名前は秘密です。また今度教えるね。"]

というようになります。

 

ではどうとるのか?

。以外の文字まで取得するようにすればOKです。

text = 'こんにちは。私の名前は秘密です。また今度教えるね。'
p text.scan(/こ[^。]*。/)

こうやると以下のように取れます。

["こんにちは。"]

 

正規表現の動きが独特なので頭の隅っこい置いておくとよさそうですね(*^^*)

何か参考になれば幸いです(*^^*)