![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет всем.
Допустим имеются несколько слов: 1. маршрут 2. ашот 3. миршот, ... Также задано ключевое слово: март. Есть ли возможность получить только похожую часть всех слов. Ожидаемый результат: 1. март 2. ат 3. мрт Пробовал регулярным выражением типа: м*а*р*т*. Результат такой: 1. мар 2. р 3. т 4. а 5. 6. т 7. м 8. р 9. 10. т |
#2
|
|||
|
|||
![]() Что понимается под "получить только похожую часть"? Если нет правила, то у вас одно понятие, у меня другое, у компьютера третье.
Хотя догадываюсь: ищется первая буква из шаблона, если нет, то следующая. Как только она находится, у шаблона эта буква изымается из поиска, переходим к следующей, а поиск продолжается с нового места. Последний раз редактировалось AlexSku, 05.01.2012 в 10:58. |
#3
|
|||
|
|||
![]() Я же показал пример, надо чтою результат был таким: март, ат, мрт
А у меня получается: мар р т а т м р т |
#4
|
|||
|
|||
![]() Код:
|
#5
|
|||
|
|||
![]() Хороший код, но он меняет местами букв. Например: Pattern:='shina' S:='hasan'. hasan становится shna, а должно было hasn
|
#6
|
|||
|
|||
![]() Если что не так, то код плохой. Нашёл ошибку, надо:
Код:
Если надо сравнить общие буквы, то алгоритм такой: первое слово это множество букв, второе слово это другое множество букв, совпадение это пересечение множеств (Set1 * Set2). Последний раз редактировалось AlexSku, 05.01.2012 в 14:45. |
#7
|
|||
|
|||
![]() |
#8
|
|||
|
|||
![]() А всё-таки вы не ответили, что вы понимаете под "найти похожую часть слов". У меня, кстати, есть реализация другого алгоритма (Боера-Мура), вычисляющую степень похожести, как и ваш алгоритм Левенштейна, но неохота его искать, не зная, для какой задачи вы ищете решение.
|