Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > удаление переносов строк


Автор: BaldHeaded 17.8.2010, 17:51
доброе время суток.

текст:
Код

текст 

текст текст текст текст текст текст 

текст текст текст  
текст текст текст текст  
(текст текст  

текст текст текст текст 
) 

текст (текст  

текст ) 

текст 


как можно с помощью регулярного выражения удалить в тексте все переносы строк, но только вне круглых скобок?

p.s. скобок внутри скобок быть не может

Автор: ming 19.8.2010, 15:42
одной регуляркой тут не обойтись.

я бы сделал так, прибегая к дополнительной переменной-накопителю:
Код

my $text = ..... ; # обрабатываемый текст
my $result;
for (split /\n/, $text) {
    $result .= $_;
    if (/\(/ .. /\)/) {
        $result .= "\n";
    } 
}
print $result;

или 
Код

my $text = ..... ; # обрабатываемый текст
my $result;
$result = join "", map { $_.="\n" if (/\(/ .. /\)/); $_ } split /\n/, $text;
print $result;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)