Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Хасан
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 7
1

Поиск по шаблону

15.02.2016, 07:36. Просмотров 986. Ответов 2

И вот к моему сожалению я не смог решить задачу:
Дан текст и шаблон поиска на основе * и %. Написать программу осуществляющий поиск без использования сторонних модулей и регулярных выражений.
Примеры выражений:
Ф*е%а*я - Федерация
Прошу подсказать как это осуществить
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2016, 07:36
Ответы с готовыми решениями:

Округление по шаблону
Всем привет, подскажите как сделать лучше (может есть какой то специальный...

Копирование файлов по шаблону
Требуется простенькая программа для поиска файлов по шаблону и их копирования в...

Выделение подстроки по шаблону
Нужно распознавать строки со временем, которые выдает сниффер wireshark при...

Как сделать записную книжку по приведённому шаблону?
Попробуем написать простенькую записную книжку. Сразу же оговорюсь, этот...

Как выбрать две подстроки из строки по шаблону?
Здравствуйте! Подскажите пожалуйста, как поместить P01 и drawing в переменные...

2
Zuzik
294 / 252 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
15.02.2016, 11:50 2
* - что угодно сколько раз, % - один любой символ ?
Алгоритм примерно такой (в случае если нужен поиск просто слова)
1. Разбиваем введенный текст на слова, с помощью функции split
2. Посимвольно проверяем каждое слово на соответствие шаблону. Можно даже сделать простенький конечный автомат.
Как проверять - на вашем же примере:
Ф - ура, нужная нам буква
е - тут стоит звездочка, в шаблоне, ждем следующую за звездочкой букву
д - то же самое
е - ура, нужная нам буква
р - тут процент, проверяем какой следующий символ
а - следующий символ нам подходит
ц - тут звездочка, ждем букву
и - все еще ждем букву
я- буква нашлась, слово и выражение закончилось

И при случае ошибок, несовпадений практически на любом шаге выдавать - слово не соответствует шаблону поиска.
1
vdm_mar
36 / 36 / 25
Регистрация: 25.10.2015
Сообщений: 102
15.02.2016, 15:50 3
Лучший ответ Сообщение было отмечено Хасан как решение

Решение

Можно еще сравнивать отрезки нахождения букв из шаблона в проверяемых словах. Если учитывать, что под * или % прячется хотя бы одна буква, то, например, буква "е" из шаблона должна стоять в отрезке слова от 2 (до нее в шаблоне два символа) до 5 (длина слова 9 - 4 позиции справа). Ну и проверять, что символы * или % не сбили проверку.

Python
1
2
3
4
5
6
7
8
9
10
11
shablon = 'Ф*е%а*я'
slovo = 'Федерация'
for i in shablon:
    if i in slovo[shablon.index(i):len(slovo) - len(shablon) + shablon.index(i) + 1]:
        Z = True
    elif i in '*%*':
        Z = True
    else:
        Z = False
        break
print(Z)
Добавлено через 13 минут
Не. Лажа. Если буквы не разделены, то они могут менять позиции и тоже будет True. Например, 'Ф*еа%*' тоже True.
Сорри.

Добавлено через 2 часа 48 минут
подправил
Python
1
2
3
4
5
6
7
8
9
10
shablon = 'Ф*е%а*я'
slovo = 'Федерация'
 
for i in shablon.replace('*', ' ').replace('%', ' ').rsplit():
    if i in slovo[shablon.index(i[0]):len(slovo) - len(shablon) + shablon.index(i[-1]) + 1]:
        Z = True
    else:
        Z = False
        break
print(Z)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2016, 15:50

Хранение распространённых математических констант и вывод их значений по шаблону
Надо реализовать хранение распространённых математических констант, таких как...

QRegExp поиск всех строк которые соответствуют шаблону и поиск их длины
//поиск строк типа ] QRegExp reg("\\\\]"); QString text = "test ] bla ]"; ...

Поиск в текстовом файле последовательностей цифр по шаблону и последующий их поиск в именах файлов (с логом)
Уважаемые программисты и хорошие люди! К Вам обращается украинский юрист. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru