- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace Filter
{
    class MainClass
    {
        /// <summary>
        /// Filter ver. 1.0
        /// Matching only one word
        /// <created>Aleksandr 23.10.2020</created>
        /// </summary>
        /// <param name="args"></param>
        /// 
        public static void Main(string[] args)
        {
            try
            {
                string str = "ехал грека через редиска че за редиска кек";
                //Настройки=====================================================================
            ////Уберите комментарий строки 20 если хотите ввести свое слово, и уберите строку 21
            ///
            //string str1 = Console.ReadLine();       //<==== decomment
            //==================================================================================
            string str1 = "редиска";
            //если разкомментировали строку 21, то замените слово "тварь" на слвоо которое ввели   //<==== decomment
            Regex regex = new Regex(@"редиска(\w*)");
            MatchCollection matches = regex.Matches(str);
            if (matches.Count > 0)
            {
                foreach (Match match in matches)
                {
                    Console.WriteLine(match.Value);
                }
                var arrS = str.Split(' ').Select(s => s.Trim(',', '?', '.', '!')).ToArray();
                for (var i = 0; i < arrS.Length; i++)
                {
                    if (arrS[i].ToLower() == str1)
                        arrS[i] = "***";
                }
                var newStr = string.Join(" ", arrS);
                Console.WriteLine(newStr);
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("Совпадений не найдено");
            }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Исключение: {ex.Message}");
                Console.WriteLine($"Метод: {ex.TargetSite}");
                Console.WriteLine($"Информация об исключении: { ex.InnerException}");
            }
        }
    }
}
                                 
        
Регулярка может определяться только в компайлтайме, т. е. задействовать значение переменной str1 никак нельзя?
https://ideone.com/mBbkmW
Почему же тут автор харкодил регулярку? Может быть, для скорости?