c#正则表达式问题

jak*_*aks 1 c# regex c#-3.0

我试图过滤掉一些基于正则表达式的文本,如手机*意味着我想要文本"电话亭","手机立方体"等.

但是当我给展位*时,它也选择了电话亭.它不应该选择它吗?这是代码,

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);
        }
Run Code Online (Sandbox Code Playgroud)

它显示"电话亭"和"前门".但按照我的标准,它不应该显示任何东西,bcoz没有字符串从展位或门开始.

我的正则表达式有问题吗?

Mit*_*ers 5

如果要在字符串开头匹配,请使用 ^

因此,例如,如果您希望匹配从手机开始,然后包含字符,则可以执行以下操作

^phone.*
Run Code Online (Sandbox Code Playgroud)

^将匹配锚定到字符串的开头.