- Поиск и получение подстроки в одинаковой для двух и более ст..., rWizard, 00:48 , 12-Фев-06 (1)
можете привести пример разбираемого файла и того, что нужно получить? (если много, можно на почту )
- Поиск и получение подстроки в одинаковой для двух и более ст..., lightspeed, 04:13 , 12-Фев-06 (2)
>можете привести пример разбираемого файла и того, что нужно получить? >(если много, можно на почту ) Вот пример. Допустим есть строка: $text = "text не text1, опять text1 и снова text3."; мне нужно получить слово text1. Повторяющееся два раза в тексте. Знаки препинания не важны. я делаю так: if ($text =~ /([0-9A-Za-z]+) +\1/) { print "found: $1\n"; } И это работает, если text1 повторяется подряд. Но, если он стоит в разных частях строки, то, данный regexp не обнаруживает повторения. И это не понятно почему, т.к. он должен запоминать контент.
- Поиск и получение подстроки в одинаковой для двух и более ст..., jd, 07:10 , 12-Фев-06 (3)
Не совсем понял задачу, но судя по примеру вам поможет что-то вроде (если нужно именно на perl): if ($text =~ /(?:^|\W)(\w+)\W.*(?<=\W)\1(?:\W|$)/) { print "found: $1\n"; } Конечно, нужно учесть, что \w - это не совсем то, что было в вашем примере. Он включает ещё '_'. А \W, соответственно, не включает...
- Поиск и получение подстроки в одинаковой для двух и более ст..., jd, 07:14 , 12-Фев-06 (4)
Ну и, как справедливо замечено в книжке "Регулярные выражения" (неточное цитирование): всегда нужно учитывать контекст задачи. Вполне может оказаться, что это выражение можно уполовинить.
- Поиск и получение подстроки в одинаковой для двух и более ст..., lightspeed, 12:01 , 12-Фев-06 (5)
>Ну и, как справедливо замечено в книжке "Регулярные выражения" >(неточное цитирование): всегда >нужно учитывать контекст задачи. Вполне может оказаться, что это выражение можно >уполовинить. Да, это примерно то, что нужно. А теперь вопрос, как получить некую матрицу, где по вертикали слова найденные в совпадении, а по горизонтали количество совпадений данного слова? Т.е. задача понимания некоего текста, основанная на статистическом подсчете количества совпадений. А затем сравнение данных совпдадений с некоей строкой поиска. Чем выше количество совпадений, тем выше статус данного текста для данной строки поиска. Пример: Google. Используя данный алгоритм можно получить 1-е совпадение. А как с оставшимися словами, совпадающими в тексте далее?
- Поиск и получение подстроки в одинаковой для двух и более ст..., Wulf, 16:48 , 12-Фев-06 (6)
> Используя данный алгоритм можно получить 1-е совпадение. А как с оставшимися словами, совпадающими в тексте далее?Вы сразу задачу полностью ставьте. В первоначальном посте Вам требовалось нахождение longest common subsequence (lcs), которую опеннетовские велосипедостроители сразу предложили решить принципиально нерабочим методом (перловый регексовый конечный автомат находит первое совпадение, а не ищет совпадение с максимальной длиной, как это делает posix-овский). Вместе с тем эта задача полностью изъедена 30 лет назад и тучу готовых алгоритмов с анализом, описаниями и кодом можно отыскать в гугле по вышеупомянутым трем словам. Потом у вас все изменилось и оказалось, что нужно multiple-patterns string matching. Т.е. несколько другое. В этом случае, как я понимаю, вам надо рыть в сторону алгоритма Ахо-Корасика (Aho Corasik) P.S. Прошу прощения за излишнее употребление англ. терминов
- Поиск и получение подстроки в одинаковой для двух и более ст..., Wulf, 16:58 , 12-Фев-06 (7)
> которую опеннетовские велосипедостроители сразу предложили решить принципиально нерабочим методом Извиняюсь перед человеком под ником jd, которого я по ошибке назвал "велосипедостроителем", недостаточно внимательно просмотрев тред. Он всего-лишь поправил чужой код. Велосипедостроитель, конечно, здесь автор темы.
- Поиск и получение подстроки в одинаковой для двух и более ст..., lightspeed, 00:21 , 13-Фев-06 (8)
>> которую опеннетовские велосипедостроители сразу предложили решить принципиально нерабочим методом >Извиняюсь перед человеком под ником jd, которого я по ошибке назвал >"велосипедостроителем", недостаточно внимательно просмотрев тред. Он всего-лишь поправил чужой код. Велосипедостроитель, >конечно, здесь автор темы. Ну велосипедостроитель, или не велосипедостроитель, мне понадобился алгоритм, и вы мне дали. За, что вам спасибо. Как спасибо и jd, за то, что он подправил мой код. :) Кстати Wulf. Прочтите еще раз мой первый топик. Что я просил? Правильно, алгоритм, для того что-бы _не_ строить свой собственный велосипед. Понимаете? А то, что я все-го лишь попытался развить алгоритм jd, до моей второй задачи. Ну что-же, мне надо было попробывать. Кстати, и алгоритм jd мне тоже очень пригодился. :) Т.ч. не стоит говорить про изобретательство. Или попросту говоря "наезжать". Здесь собираются, в основном специалисты. И пусть я ранее не слышал про этот алгоритм, это совсем ничего не значит. Т.к. возможны вы не слышали, про другие вещи, в которых разбираюсь я. :)
|