Ruby: split через регулярные выражения

Модератор: Модераторы разделов

Аватара пользователя
Иван Шихалев
Сообщения: 167
Статус: принципиальный дилетант
ОС: Gentoo Linux

Ruby: split через регулярные выражения

Сообщение Иван Шихалев »

Следующим ходом я хочу выделить из текста все строки в двух различных формах записи.

Код: Выделить всё

#!/usr/bin/ruby -Ku

RE = /(".*?")|(<<(.*?)$.*?^\3)/m

text = <<TEXT

a = "alpha"

b = <<SUB
beta
SUB

TEXT

p text.split(RE)


Показывает следующий результат:

Код: Выделить всё

["\na = ", "\"alpha\"", "\n\nb = ", "<<SUB\nbeta\nSUB", "SUB", "\n\n"]


Меня не устраивает лишний элемент "SUB". Есть ли в Ruby такая возможность: сделать группировку видимой только внутри регулярного выражения (чтобы на нее можно было ссылаться), но не попадающей наружу? '(?>' не спасает.
Иван Шихалев
shikhalev.org
Спасибо сказали: