Регулярные выражения. Поиск как в Windows со "*" - C#
Формулировка задачи:
Попытался сделать поиск как в Windows когда "*" означает любой символ. Заранее оговорюсь, что поиск осуществляю для отдельных слов, а не для длинного текста. Работает вроде ничего, но не находит слова с символом "минус" (-). Код далек от совершенства я так подозреваю так что предложения по оптимизации ПРИВЕТСТВУЮТСЯ.
static void Main(string[] args)
{
#region
Console.WriteLine("\nВведите слово для поиска :");
string inp = Console.ReadLine();
string replace="\\w*";
Regex regex=new Regex("\\*", RegexOptions.IgnoreCase);
string regstr = "";
if (inp == "")
{
regstr = "\\w*";
}
else
{
regstr = "^" + regex.Replace(inp, replace) + "$";
}
Console.WriteLine("\n*** {0}", regstr);
//--------------------------------------------------------------------------------
string[] test =
{
"L_tube_4", "water", "wall54", "Y-drinage", "87;lkjl;", "slin", "lkjslk", "drink", "L_hyf",
"L_spr_spr", "L_spr_tube_3"
};
Console.Write("\nlength string : {0}", test.Length); //////////////////////////////
Regex reg = new Regex(@regstr, RegexOptions.IgnoreCase);
foreach (string str in test)
{
if (reg.IsMatch(str))
{
Console.WriteLine("\n***----------------------------------------\n" + str);
}
}
Console.ReadKey();
#endregion
}Решение задачи: «Регулярные выражения. Поиск как в Windows со "*"»
textual
Листинг программы
new Regex(@regstr, RegexOptions.IgnoreCase);