簡體   English   中英

使用關鍵正則表達式字符在正則表達式中為模式使用字符串

[英]Using a string for a pattern in regex using key regex characters

編輯:要清除混亂,即使使用“看起來更黑”的“替換”功能,仍然無法解決。

因此,長話短說,我是從文件輸入創建正則表達式的,唯一的是,需要正則表達式時的文件輸入將如下所示:

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;
        }

忽略用於調試目的的MessageBox,但是不幸的是,從未看到“我到達這里”框。 我的整個目標是實際取得成功的比賽,以啟動該foreach循環。

沒有看到您需要使用正則表達式進行此簡單替換。 改用這個

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

簡而言之:您應該包括一些對您不起作用的示例輸入。 沒有樣本輸入,這只是一個猜測。

您可能需要為Matches調用指定一些RegexOptions 我的錢全用於您要進行不區分大小寫的搜索。

myM = Regex.Matches(s, phrase, RegexOptions.IgnoreCase);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM