使用关键字正则表达式字符在正则表达式中使用字符串作为模式

时间:2013-06-14 18:04:58

标签: c# regex

编辑:为了清除混乱,这仍然没有得到解决,即使有更好看的"替换功能。

所以,长话短说,我从文件输入创建正则表达式,唯一的是,需要正则表达式时的文件输入,如下所示:

look*

在C#的正则表达式中,这意味着:

look[a-zA-Z]*

因此,我尝试使用以下代码执行此操作:

static void HighlightPhrase(RichTextBox box, string phrase, Color color)
    {
        int pos = box.SelectionStart;
        MatchCollection myM;
        string s = box.Text;
        MessageBox.Show(phrase, "PHRASE");
        if (phrase.Contains("*"))
        {
            phrase = phrase.Replace(phrase = phrase.Replace("*", "[a-zA-Z]*");
            MessageBox.Show(phrase);
            myM = Regex.Matches(s, phrase);
            foreach (Match m in myM)
            {
                MessageBox.Show("I reach here!");
                box.SelectionStart = m.Index;
                box.SelectionLength = m.Length;
                box.SelectionColor = color;
            }
            box.SelectionStart = pos;
            box.SelectionLength = 0;
        }

忽略MessageBoxes,这些用于调试目的,但不幸的是,我来到这里"箱子从未见过。我的整个目标是实际成功完成匹配以启动foreach循环。

2 个答案:

答案 0 :(得分:2)

这个简单的替换看不到你需要正则表达式。请改用

phrase = phrase.Replace("*", "[a-zA-Z]*");

答案 1 :(得分:2)

快速放弃:您应该包含一些不适合您的样本输入。没有样本输入,这只是猜测。

你可能需要为你的Matches调用指定一些RegexOptions;我的钱在你想要一个不区分大小写的搜索。

myM = Regex.Matches(s, phrase, RegexOptions.IgnoreCase);
相关问题