Регулярное выражение для поиска всех подстрок и самой длинной подстроки

Я обычно делал бы что-то подобное, используя строку libray. Но мне интересно, можно ли это сделать с помощью регулярного выражения.

Я хочу сделать следующее: Учитывая строку поиска :

Сиэтл великолепен

Я хочу найти все его подстроки в данном предложении. Итак, примените регулярное выражение к следующему предложению

Сиэтл - это здорово, здорово, здорово, Сиэтл

Должно дать мне

Сиэтл, Сиэтл потрясающий, это потрясающий, потрясающий, это Сиэтл

Один ограничение, которое может быть полезным, состоит в том, что в предложении всегда будут только слова, присутствующие в строке поиска, и пробелы между ними.

Примечание Если есть совпадение, это должна быть самая длинная строка из возможных. Как и в приведенном выше примере, совпадения не должны быть отдельными словами, а должны быть максимально длинными подстроками. Также необходимо поддерживать порядок между словами. Вот почему

awesome is Seattle

в приведенном выше предложении дает нам

awesome, is и Seattle

. Я не уверен, можно ли сделать что-то подобное с помощью регулярного выражения, хотя оно является жадным. Буду признателен за любое понимание этого! Я знаком как с C #, так и с Java и могу использовать любую из их библиотек регулярных выражений.

5
задан John 10 July 2011 в 23:03
поделиться