Edited at

[Ruby]後読みを使ったsplitで句点(。)を残したまま文に分割

More than 1 year has passed since last update.

初投稿になります。


はじめに

Rubyで文章を一文ずつに分割して配列にしたい場合、

String#splitを使って句点'。'で区切ってやればいいですが、区切り文字として使った'。'が消えてしまいます。

後ろにまた付け直すこともできますが、面倒です。

text = 'おはよう。こんにちは。こんばんは。'

text.split('。')
# => ["おはよう", "こんにちは", "こんばんは"]

text.split('。').map{|s| s + '。'}
# => ["おはよう。", "こんにちは。", "こんばんは。"]


正規表現で後読みを使う

これには、String#splitに正規表現で「肯定的後読み」(?<= )を使ってやれば、区切り文字"。"を消さずに分割できます。

text = 'おはよう。こんにちは。こんばんは。'

text.split(/(?<=。)/)
# => ["おはよう。", "こんにちは。", "こんばんは。"]


scanメソッドでもできる

ちなみにString#scanを使ってもできます。

text = 'おはよう。こんにちは。こんばんは。'

text.scan(/.*?。/)
# => ["おはよう。", "こんにちは。", "こんばんは。"]

こちらのほうが簡単ですね。


参考にしたサイト

正規表現の先読み・後読みを極める!