2013-10-15 49 views
-1

我試圖用正則表達式不能做它來代替某些內容,可以請你看看正則表達式。通配符

我輸入:<Tag>E2iamjunkblabla</Tag> 預期輸出:<Tag>E2done</Tag>

我我試試這個:

string input = "<Tag>E2iamjunkblabla</Tag>"; 
string output= System.Text.RegularExpressions.Regex.Replace(input, "<Tag>E2*</Tag>", "<Tag>E2done</Tag>"); 

我在做什麼錯?在E2之後還有什麼辦法可以保留前3個字符(數字或字母)? 我的意思是,輸出應爲

<Tag>E2iam</Tag> 
+1

'*'匹配多次前面的項目(它將匹配2),它不是通配符。你可能需要'。*'而不是 – Charleh

+2

你需要學習正則表達式。 '*'匹配零個或多個最後一個字符。 – SLaks

+0

你能發佈確切的預期輸入/輸出嗎?當你說保持前三 - 我假設這3個字符可能是任何東西.... – Charleh

回答

1

聽起來像是你想這樣:

string input = "<Tag>E2iamjunkblabla</Tag>"; 

string output = System.Text.RegularExpressions.Regex.Replace(input, "<Tag>E2(...).*</Tag>", @"<Tag>E2$1done</Tag>"); 

進行分解:

比賽:

比賽<Tag>再搭配E2然後匹配任何字符的3倍(...)(圓括號表示將該捕獲存儲在一個組中),然後匹配任何字符零或其次是文字</Tag>

的多次.*取代:

<Tag>E2替換值,則捕獲組的值1 $1則文本done</Tag>

讓我知道,如果你有問題 - 讀正則表達式! (哦,可能有一些方法來做到這一點,這只是其中之一)

+0

你是男人! @Charleh謝謝! – Robert

+0

「括號表示將該捕獲存儲在一個組中」 - 真棒 – Robert