Регулярные выражения. Обратная ссылка в выражении. Как сделать, чтобы искались только отдельные слова? - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication1
{
    class Program
    {
        static string text = "the the rocket. man manager man spaderman " + 
                                  "if if i am newbie, you are professional  professsional";
 
        static void Main(string[] args)
        {
            // "\1" это обратная ссылка на выражение ([A-Za-z]+). То есть ссылается на 
            //найденный текст, на точно такой же, который был найден
            string pattern = @"([A-Za-z]+)\s\1"; 
            Regex regex = new Regex(pattern);
            Match match = regex.Match(text);
            MatchCollection matchColl = regex.Matches(text);
 
            foreach (Group group in matchColl)
            {
                Console.WriteLine(group.ToString());
            }
            Console.ReadKey();
        }
    }
}
Такой вариант не подойдёт:
string pattern = @"([A-Za-z]+\s+)\1";
Мне надо именно определять конец слова, а не чтобы был пробел после слова.
В результате работы этой программы на экран будет выведено:
the the man man if if
А должно быть:
the the if if
Видите, на скриншоте видно, что выделяется часть слова "manager", хотя мне надо найти именно отдельные парные слова.

Решение задачи: «Регулярные выражения. Обратная ссылка в выражении. Как сделать, чтобы искались только отдельные слова?»

textual
Листинг программы
@"([A-Za-z]+)\s\1\b"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы