|
|
|
| Добрый день. Обращался на форум уже, но ответа так и не получил. В общем помогите написать regular expression )))). Надо найти в строке отрывок состоящий из 70 символов, в котором наиболее часто встречается пара <b>какое то слово</b>. Строка может иметь произвольную длину. И ещё надо, чтобы отрывок не начигался и не кончался <b> или </b>. Из-за этого можно расширить отрывок. Например в 80 символов. | |
|
|
|
|
|
|
|
для: winflip
(21.07.2009 в 11:34)
| | Вспомни определение последовательноси aka варианты. И всё будет ясно! | |
|
|
|
|
|
|
|
для: Жмурик
(22.07.2009 в 04:08)
| | Ну я же не буду перебирать все варианты, я хочу регулярным выражением это сделать | |
|
|
|
|
|
|
|
для: winflip
(22.07.2009 в 10:18)
| | Странный ты какой. И нельзя все варианты перебрать, ведь натуральный ряд индуктивен. | |
|
|
|
|
|
|
|
для: Жмурик
(22.07.2009 в 18:05)
| | Не очень Вас понимаю | |
|
|
|
|
|
|
|
для: winflip
(22.07.2009 в 19:35)
| | Понимаете, существует изоморфное вложение множества байт с введеной на нём операцией конкатенации во множество циклической группы Z_256(+) = <1> с введенной на нём операцией сложения по модулю 256. Я практически показал решение. Действуйте! | |
|
|
|
|
|
|
|
для: Жмурик
(22.07.2009 в 20:19)
| | > Я практически показал решение.
Ну да практически)))
Теперь совсем не понял ничего, я всего лишь попросил помочь написать регулярное выражение. А вы мне о каком то изоморфном множестве байт | |
|
|
|
|
|
|
|
для: winflip
(23.07.2009 в 10:27)
| | Переведу на руский, хотя и неуверен, что это пойдет на пользу.
Где Вы прочли, что регулярные выражения можно применять для перебора подстрок? | |
|
|
|
|
|
|
|
для: Trianon
(23.07.2009 в 11:32)
| | В том то и дело что я не собираюсь перебирать.
m/([\w]+\<b\>(.*?)\<\/b\>[\w]+)+/is
|
Что то вроде такого выражения мне надо, но только ограничиться 70 символами. Я вообще не знаю что делать | |
|
|
|
|
|
|
|
для: winflip
(23.07.2009 в 14:39)
| | а где здесь реализовано "наиболе часто встречается"?
Это регулярками Вы не сделаете.
ограничение в 70 символов задается так (.{70}) или так (.{70:}) или так (.{:70})
в зависимости от того, в какую сторону ограничение. | |
|
|
|
|
автор: ******* (24.07.2009 в 01:14) |
|
|
для: winflip
(23.07.2009 в 14:39)
| | Найти из всех совпадений одно самое нужное можно анализируя все возможные варианты
#<? perl
#!/usr/bin/perl -W
print "Content-Type: text/plain\n\n";
my $txt = '<b>winflip</b> (21.06.2009 в 12:46)
.......<b>winflip</b>
Язык программирования perl.
........
2) Найти отрывок состоящий из 70 символов, в котором наиболее часто встречается пара
Заранее благодарен.
,,,,,,,,,,,,
<b>winflip</b> (21.06.2009 в 12:48)
;;;;;;;;;;;;;;;;;;;;
<b>winflip</b> (21.06.2009 в 14:59)
:::::::::::::::::::::::::::::::::::;;::::::::::
<b>winflip</b> (21.06.2009 в 12:48)
С первым разобрался
...................................
........................
';
my @starts, @stops;
while ($txt =~ /<b>.+?<\/b>/gcs)
{
print $-[0] .'-'. $+[0] ."\n";
push @starts, $-[0];
push @stops, $+[0];
}
print "\n";
@list = sort({70 > $b-$a || $b>$a} @starts);
print join(' ', @starts) . "\n";
print join(' ', @stops) . "\n";
|
| |
|
|
|
|
автор: ******* (24.07.2009 в 01:26) |
|
|
для: winflip
(23.07.2009 в 14:39)
| | >@list = sort({70 > $b-$a || $b>$a} @starts);
это я так , просто забыл стереть :) | |
|
|
|
|
|
|
|
для: *******
(24.07.2009 в 01:26)
| | Спасибо, огромное правда ошибка была, в регулярном надо было сэкранировать /. | |
|
|
|