LoginSignup
5
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-13

初投稿になります。

はじめに

Rubyで文章を一文ずつに分割して配列にしたい場合、
String#splitを使って句点'。'で区切ってやればいいですが、区切り文字として使った'。'が消えてしまいます。

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

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

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

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

正規表現で後読みを使う

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

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

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

scanメソッドでもできる

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

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

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

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

参考にしたサイト

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

5
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2