\b(\w{2,})\b.*\b\1\b
будет соответствовать всему от первой серии последовательных символов до ее повторения. Обратная ссылка \1
будет содержать соответствующий шаблон (например, AA, HH или YYYY в ваших примерах).
\b
необходимы для обеспечения границ слов.
РЕДАКТИРОВАТЬ: Ох. Я только что заметил, что вы хотите сделать что-то еще полностью, а именно, удалить HTML-теги из строки / файла. Не используйте для этого регулярные выражения. Я не буду цитировать статью, которую все остальные всегда цитируют, когда кто-то задает такой вопрос, но проблема (в двух словах) в том, что HTML не является регулярным, и попытка использовать регулярные выражения здесь просто напрашивается на неприятности. Вот почему никто (в здравом уме) не использует регулярные выражения для «разбора» HTML - они используют парсер.
Тем не менее, я использовал , используя регулярные выражения для извлечения данных из правильно сформированных источников XML, где я точно знал структуру и знал, что интересующие меня теги никогда не будут вложенными и т. Д. - но рекурсия с регулярными выражениями просто ужасно сложно, если это вообще работает (C # и Perl имеют некоторую поддержку, но это невероятно сложно).