Я пытаюсь отфильтровать некоторый текст на основе регулярных выражений, таких как телефон * означает, что мне нужен текст "Телефонная будка", "Телефонный куб" и т. Д.
Но когда я даю кабину *, она также выбирает Телефонную будку,Не стоит ли выбирать это обряд?Вот код,
string[] names = { "phone booth", "hall way", "parking lot", "front door", "hotel lobby" };
string input = "booth.*, door.*";
string[] patterns = input.Split(new char[] { ',' });
List<string> filtered = new List<string>();
foreach (string pattern in patterns)
{
Regex ex = null;
try
{
ex = new Regex(pattern.Trim());
}
catch { }
if (ex == null) continue;
foreach (string name in names)
{
if (ex.IsMatch(name) && !filtered.Contains(name)) filtered.Add(name);
}
}
foreach (string filteredName in filtered)
{
MessageBox.Show(filteredName);
}
Он отображает «Телефонная будка» и «Передняя дверь».Но по моим критериям это ничего не должно показывать, потому что никакая строка не начинается с будки или двери.
Есть ли проблемы в моем регулярном выражении?