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


Автор: Grost 18.2.2011, 14:17
Здравствуйте.

После выполнения скрипта:
Код

#!usr/bin/perl -w
use LWP::UserAgent;

if($ARGV[0]){
  my $site = 'http://www.cbr.ru/other/print.asp?file=holidays_'.$ARGV[0].'.htm';
  my $UA = LWP::UserAgent->new;
  my $result = $UA->get($site);
  my $x=0;
  open HD, ">> C:/content\.txt" or die "HOLIDAY-> $!\n";
  my $str = $result->content;
  $str =~ s/(\s[^>]\n)|(\t)//g;
  print HD $str;
  close HD;
}


Получается примерно такое содержимое:
Код

...
</table>
<table border="0" width="100%" id="table3" cellspacing="1">
<tr>
<td width="35%">&nbsp;</td>
 <td valign=top>
 1, 2, 3, 4, 5 января – Новогодние каникулы;</td>
</tr>
<tr>
<td>&nbsp;</td>
 <td valign=top>
 6 января – выходной;</td>
</tr>
<tr>
<td>&nbsp;</td>
 <td valign=top>
 7 января – Рождество Христово;</td>
</tr>
<tr>
<td>&nbsp;</td>
 <td valign=top>
 8 января – выходной;</td>
</tr>
<tr>
<td>&nbsp;</td>
 <td valign=top>
 9 января – выходной;</td>
</tr>
...


Хочу удалить перенос строки:
 <td valign=top>
 9 января – выходной;</td>

в скрипт добавляю регулярку:
$str =~ s/<td valign=top>\n/<td valign=top>/g;

Но результата нуль.. подскажите как составить регулярку чтобы он не переносил на новую строку.

Автор: arto 18.2.2011, 15:23
gs

Автор: Grost 18.2.2011, 16:13
$str =~ s/<td valign=top>\n/<td valign=top>/gs
не получилось

$str =~ s/\n//g
Выдаёт текст без переносов строк, но когда в блокноте открываю там на месте переносов стоят квадраты.

Возможно накосячил регуляркой:
$str =~ s/(\s[^>]\n)|(\t)//g;

Автор: GoDleSS 19.2.2011, 02:15
Скорее всего там у вас перенос виндовый \r\n.
Подключим все возможные варианты, на всякий:
Код
$str=~s/<td valign=top>[\r\n\s\t]+/<td valign=top>/g;

Автор: Grost 21.2.2011, 10:14
Да, действительно стоял \r\n. Спасибо за помощь smile

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