[英]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.