Учитывая строку "A B C a b B"
, я хочу сопоставить повторяющиеся слова (независимо от регистра). Ожидаемый результат будет соответствовать "a" и "b" (последние вхождения A и B) ИЛИ "A" и "B" (первые вхождения)
EDIT: я хочу найти только первое или последнее вхождение слова
Я знаю, что на этот вопрос можно было бы лучше ответить, разбив строку и подсчитав каждый токен (уменьшив регистр).
Однако я хотел бы попытаться сформулировать регулярное выражение, которое поможет мне найти эти слова, просто ради практики. .
Моя первая попытка была: (?=\b(\w+)\b.*\b(\1)\b)(\1)
Однако она соответствует первому A, первому B и второму b (A B b).
Я думал каким-то образом использовать положительный просмотр с отрицательным просмотром вперед, чтобы получить последние экземпляры повторяющегося слова: (?<=.*(?!.*(\w+).*)\1.*)\b\1\b
(в моей голове это переводится как «слово, которое было сопоставлено раньше и больше не будет соответствовать ")
Ну, это не работает для меня, к сожалению.
Можно ли таким образом использовать положительный и отрицательный просмотр вперед?
Можно ли исправить мое регулярное выражение?
Я пытался решить эту проблему на C#.
Это не домашнее задание