编辑:为了清除混乱,这仍然没有得到解决,即使有更好看的"替换功能。
所以,长话短说,我从文件输入创建正则表达式,唯一的是,需要正则表达式时的文件输入,如下所示:
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循环。
答案 0 :(得分:2)
这个简单的替换看不到你需要正则表达式。请改用
phrase = phrase.Replace("*", "[a-zA-Z]*");
答案 1 :(得分:2)
快速放弃:您应该包含一些不适合您的样本输入。没有样本输入,这只是猜测。
你可能需要为你的Matches调用指定一些RegexOptions;我的钱在你想要一个不区分大小写的搜索。
myM = Regex.Matches(s, phrase, RegexOptions.IgnoreCase);