2016-06-16 2 views
1

Мне нужно найти подстроку из строки, и мне было интересно, что это самый простой способ. Не ищу здесь решения для кодирования, но идеи, например, какой алгоритм я использую, учитывая, что я пытаюсь работать с ним, используя язык программирования Scheme.Поиск строк в строке

Так скажем, у меня есть следующий входной сигнал:

Pattern = Это ... лиса хорошо ... дом легионе ... город String = Это быстрая коричневая лиса хорошая лиса в дом дома легиона в нашем большом городе

Вывод должен быть (список списков):

((быстрые коричневый) (лиса в доме) (в нашем большом))

Спасибо авансовый.

+0

Возможный дубликат [Подстановочная строка соответствия] (http://stackoverflow.com/questions/2093426/wildcard-string-matching) –

ответ

1

Такие вещи лучше всего использовать с регулярными выражениями. Ракетка пример:

(regexp-match #rx"This (.*) fox is a good (.*) house of legion (.*) town" 
       "This quick brown fox is a good fox in the house of house of legion in our great town") 
=> ("This quick brown fox is a good fox in the house of house of legion in our great town" 
    "quick brown" 
    "fox in the house of" 
    "in our great") 

Процедура regexp-match возвращает список групп захвата (захват группы 0 является всей строка ввода), или #f, если матч не удался.

+0

Спасибо, оцените. Если мне нужно реализовать (. *) Функциональность самостоятельно, как мне это сделать? Любые указатели или ссылки оцениваются. Заранее спасибо. – user151193

+0

Сколько вы хотите сделать сами? SRFI-13 имеет 'string-contains', который возвращает индекс подстроки. Если вы также не хотите использовать это, вы всегда можете создать свою собственную процедуру индекса строки. Это должно быть проще, чем выполнение регулярных выражений. –

Смежные вопросы