我剛開始使用正則表達式,因此忍受我的術語。我有一個在字符串上正常工作的正則表達式模式。該字符串可以是格式「text [pattern] text」。因此,我也有一個否定第一種模式的正則表達式模式。如果我打印出每場比賽的結果,所有內容都能正確顯示。使用正則表達式編輯C#中的字符串
我遇到的問題是我想添加文本到字符串中,它改變正則表達式MatchCollection中匹配的索引。例如,如果我想括在「TD」匹配「/ TD」,」標籤找到比賽我有以下代碼:
Regex r = new Regex(negRegexPattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
MatchCollection mc = r.Matches(text);
if (mc.Count > 0)
{
for (int i = 0; i < mc.Count; i++)
{
text = text.Remove(mc[i].Index, mc[i].Length);
text = text.Insert(mc[i].Index, "<td>" + mc[i].Value + "</td>");
}
}
這第一個匹配的偉大工程,但如你所期望的。 mc [i] .Index不再有效,因爲字符串已經改變了。因此,我試圖在for循環中搜索匹配量(mc.Count)的單個匹配,但隨後我一直在尋找第一場比賽。
所以希望在不引入更多的正則表達式,以確保它不是第一場比賽,並在一個字符串藏在心裏,沒有任何人對我怎麼能做到這一點?感謝您輸入的任何輸入。
編輯:謝謝大家的回覆,我很欣賞他們。
只是一個小評論。你不需要if(mc.Count> 0)塊。如果集合中沒有項目,它將不會進入for循環。 – BFree 2009-01-23 20:22:15
你實際擁有的一個例子字符串,你想要的可能是有用的。我有沒有那麼無理的感覺,正則表達式是你的任務的錯誤工具。 – Tomalak 2009-01-23 20:27:04