![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск...
programmer90 © (2008-09-09 18:05:00)Здравствуйте ещё раз. На самом деле задача не так проста, несмотря на то что в теме сообщения я указал лишь одно слово...поиск
Нужно разработать такой алгоритм поиска
Допустим у нас в стринг массиве имеется строка : Sorry, "argument" is not found.
Если мы запросим в поиске : Sorry, "здесь_может_быть_что_угодно_без_пробелов_и_без_кавычек" is not found, то поиск должен обнаружить вышеуказанную строку.
Всего таких "argument"-ов может быть 2 штуки .
Благодарю-с.
programmer90 (2008-09-09 22:54:00) [21]А вот и уточнения:
Вот дан массив из строк:
Sorry, qwerty is not found
Sorry, asd123 is not found
Sorry, 123asd is not found
Sorry, sd123+_) is not found
Sorry, wqeq**90_)98 is not found
Sorry, продолжаем_в_том_же_духе is not found
Здесь находится текст который вообще не в тему
Я ввожу Sorry, "asd" is not found тогда
в результате он должен указать на СТРОКУ где находиться искомая строка
в данном случае это начиная 1-6 строки
Я ввожу Sorry, "asd2" is not found или
Sorry, "Мама_мыла_раму" is not found
и в результате тоже самое 1-6
То есть обобщая вышесказанное:
В поиске учавствуют несколько слов (совукупность символов разделенные пробелами) из этих слов 2 слова взятые в кавычки могут быть проигнорированы в процессе поиска.
Sorry, первое слово
"Мама_мыла_раму" второе слово его можно проигнорировать и.т.д....
Медвежонок Пятачок (2008-09-09 22:24:00) [22]А если получить надо только некоторые символы из последовательности, то регулярные выражения, вроде как, не сильно помогут.
Поиогут. РВ позволяют ответить не только на вопрос "совпало/не совпало"
Юрий Зотов (2008-09-09 21:12:00) [23]> Zeqfreed © (09.09.08 21:10) [10]
Видимо, да. Подождем.
Zeqfreed (2008-09-09 21:10:00) [24]> Юрий Зотов © (09.09.08 21:06) [9]
Остается тогда только ожидать уточнений от автора.
Юрий Зотов (2008-09-09 21:06:00) [25]Автор писшет, что "то поиск должен обнаружить вышеуказанную строку". Какую именно строку надо найти - то ли всю целиком, то ли только параметры - этого он не уточнил. Поэтому я и говорю, что задача сформулирована не совсем понятно. Но если я правльно ее понял, то вот возможное решение:
uses
Masks;
procedure TForm1.Button1Click(Sender: TObject);
const
YesNo: array[boolean] of string = ('No', 'Yes');
begin
Caption := YesNo[MatchesMask('Sorry, "параметр1" "параметр2" is not found.', 'Sorry, * is not found.')]
end;
Zeqfreed (2008-09-09 20:54:00) [26]> Юрий Зотов © (09.09.08 20:15) [7]
Насколько я понял, то нужно найти все то, что внутри кавычек. А если получить надо только некоторые символы из последовательности, то регулярные выражения, вроде как, не сильно помогут.
Юрий Зотов (2008-09-09 20:15:00) [27]> Zeqfreed © (09.09.08 20:12) [6]
Там может быть "что угодно", вот в чем соль. И если это "что угодно" надо при поиске игнорировать, то вся сложность в этом и есть. А пробелы и кавычки никакой роли не играют.
Zeqfreed (2008-09-09 20:12:00) [28]> Юрий Зотов © (09.09.08 20:04) [4]
Там ведь написано, что без пробелов и без кавычек. Единственная трудность могла быть с экранированными кавычками, но раз их там не может быть, то и обрабатывать такой случай не нужно.
Юрий Зотов (2008-09-09 20:10:00) [29]Еще стоит посмотреть в сторону функции MatchesMask.
Юрий Зотов (2008-09-09 20:04:00) [30]Возможно, и не нужны. Задача сформулирована не совсем понятно, но смущает вот эта фраза: здесь_может_быть_что_угодно. Если при поиске это самое "что_угодно" нужно игнорировать, то регулярные выражения - самое то.
Zeqfreed (2008-09-09 19:56:00) [31]Для такого простого случая регулярные выражения, наверное, не нужны.
Юрий Зотов (2008-09-09 19:43:00) [32]Похоже, здесь нужны регулярные выражения. Что-то типа
Sorry, "*" is not found.
Palladin (2008-09-09 18:16:00) [33]Pos + F1