Ответ undur_gongor дает вам то, о чем вы просите, но мне интересно, действительно ли это то, что вам действительно нужно.
Например, что если строка законно заканчивается числом, то точка, например, так:
str = "1. Hello, World\n 2.\n Good Morning\n 3.Today is 29th January 2012.\n 4. This should be a new line.\n"
В итоге вы получите:
"1. Hello, World\n 2. Good Morning\n 3.Today is 29th January 2012. 4. This should be a new line.\n"
Так что вам может быть лучше использовать:
str.gsub(/(^\d+\.|\n\s*\d+\.)\n/, '\1')
^\d+\.
часть выражения обнаруживает первую «строку» в строке.Часть \n\s*\d+\.
ищет последующие «строки»;он принимает бесконечные пробельные символы перед любым многозначным числом и точкой.
Возможно, он не идеален, но охватывает больше сценариев.Есть ли у вас лучший способ получения данных?Разбор строк для данных - тяжелая работа в лучшие времена;тем более, когда строка плохо отформатирована.