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

#regex

#регулярное выражение

Вопрос:

Например, у меня есть текст:

Word1 word2 — это word3
(обратите внимание, что word1 может быть == word2 == word3)

Я хочу, чтобы мое регулярное выражение работало, когда расстояние между словами word (i) <= N. Расстояние — это количество слов между словами word.

Расстояние между word1 и word2 равно 0.

Расстояние между word2 и word3 равно 1.

Расстояние между word1 и word3 (= 2) не следует принимать во внимание.

Я создаю регулярное выражение для решения этой проблемы, но оно учитывает расстояние между первым и последним одинаковыми словами. Как я могу это исправить?

 (bw b)W ((bw b)W ){N,}?1
 

Для моего текстового примера мне нужно регулярное выражение, которое будет находить совпадения, только когда N = 0 или 1.

 (bw b)W ((bw b)W ){0,}?1
(bw b)W ((bw b)W ){1,}?1
 

Но теперь это работает и при N = 2

 (bw b)W ((bw b)W ){2,}?1
 

Комментарии:

1. Каково ваше определение расстояния ?

2. Ваша постановка проблемы довольно запутанна. Пожалуйста, приведите несколько примеров приемлемых и неприемлемых входных данных, которые иллюстрируют, что вы хотите сделать.

3. @revo Количество слов между одними и теми же словами.

4. Каким должен быть ожидаемый результат N = 1 в вашем данном примере?

5. Я подчеркиваю, каким должен быть ожидаемый результат .