正在循環訪問C#關鍵字數組,併爲每個關鍵字應用正則表達式。 (我工作的語法高亮顯示。)正則表達式 - 在某些情況下不起作用
我只是想匹配,如果:
關鍵字是上線的第一個字或字符前面就是 一個空格,句號或一個開括號
AND
關鍵字後的字符是空格,句號或開放 括號。
這就是我想出了:
foreach (string keyword in keyWords)
{
regex = new Regex(@"(?<=[\s\.(])" + keyword + @"(?=[\s\.(])");
foreach (Match match in regex.Matches(code))
{
code = code.Replace(match.Value, "<span class='keyword'>" + match.Value + "</span>");
}
}
那麼,在下面的文本的情況下:
「的foreach(字符串s在SS){}」
單詞「foreach」匹配,但也有關鍵字「in」嵌套int字「字符串」匹配 - 但這不好,因爲前後的字符不符合標準。
有趣的是,在下面的文本的情況下:
「xforeachx(字符串s在SS){}」
單詞 「的foreach」 不匹配。
那麼爲什麼「字符串」中的「in」匹配而不是第二個示例中的「foreach」?我錯過了什麼?
謝謝!
我相信你需要避開括號。當你想直接使用它們時,你必須表示'\('或'\)' – 2012-07-26 20:37:19
你正在使用正則表達式匹配行內,然後恢復到一個字符串替換?爲什麼不使用Regex.Replace? – 2012-07-26 20:45:40
@BradChristie我需要在替換中包含實際的關鍵字。不知道如何用Regex.Replace做到這一點。 – Rivka 2012-07-26 20:48:44