Extract palindromes with RegEx

Здравейте,

попаднах на един интересен въпрос от интервю- "възможно ли е от даден стринг да се извадят всички думи, които са палиндроми, но само чрез използването на RegEx".

Потърсих информация в StackOverflow, но там мненията са доста противоречиви. Някои казват, че това е невъзможно, тъй като Регулярните изрази не поддържат рекурсия. Други казват, че би било възможно само ако дължината на думите е до 4,5 букви.

Интересуваме специално за .Net дали е възможно?

Попаднах на този RegEx за .Net, но https://regex101.com/ твърди, че е грешен.

(?<N>.)+.?(?<-N>\k<N>)+(?(N)(?!))

 

Ето примерен input:

madam#refer,##invalid% kayak%% invalid

output:

madam, refer, kayak

 

Забравих да кажа- без това решение моля, в което се използва Reverse() на думата, защото интервюиращия може да не го приеме. wink

using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Linq;

namespace Palindromes
{
    class Program
    {
        static void Main(string[] args)      
        {
            string input=Console.ReadLine();
            var list = new List<string>();
            Regex regexForWord = new Regex(@"[a-zA-Z]+");
            MatchCollection words = regexForWord.Matches(input);
            foreach (Match match in words)
            {
                string currentWord = match.Value;
                char [] reverse =currentWord.Reverse().ToArray();
                string reverseCurrentWord = (string.Join("", reverse)).ToString();

                if (currentWord == reverseCurrentWord)
                {
                    list.Add(currentWord);
                }

            }

            Console.WriteLine(string.Join(", ",list));          

         }
    }
}