2011-02-22 11 views
1

阿羅哈,c#和正則表達式:我如何進行比賽?

我需要匹配page.aspx?cmd=Show&id=,但不能匹配http://random address/page.aspx?cmd=Show&id=

現在我只是做了簡單的休息替換strContent.Replace("page.aspx?cmd=Show&id=", "page.aspx/Show/");但要避免上面,我想我需要移動到正則表達式。

編輯:對不起,我有點缺乏細節當前替換工程,因爲我沒有考慮到被修改的地址應該只是相對地址,而不是絕對的。我需要捕獲所有與page.aspx?cmd=Show&id=匹配的相對地址,並將該字符串轉換爲page.aspx/Show/

.StartsWith^將無法​​正常工作,因爲我查看一個完整的html頁面的字符串。所以,我需要能夠轉換:

<p>Hello, please click <a href="page.aspx?cmd=Show&id=10">here</a>.</p> 

<p>Hello, please click <a href="page/Show/10">here</a>.</p> 

,但不能轉換

<p>Hello, please click <a href="http://some address/page.aspx?cmd=Show&id=10">here</a>.</p> 

我使用的標籤爲我的例子,但我需要IMG標籤轉換爲好。

謝謝!

+1

您的意思是它必須是相對地址嗎?你的例子不夠描述。 – Aliostad

回答

3

我會建議使用ParseQueryString而不是一個正則表達式,因爲即使參數的順序不同,它也可以工作。

否則,您可以使用string.StartsWith來測試是否匹配。

如果你想使用你需要使用^,也逃避你的字符串的所有特殊字符的正則表達式:

Regex regex = new Regex(@"^page\.aspx\?cmd=Show&id="); 

如果你不想自己逃脫字符,你可以得到Regex.Escape爲你做:

string urlToMatch = "page.aspx?cmd=Show&id="; 
Regex regex = new Regex("^" + Regex.Escape(urlToMatch)); 
+0

如果strContent只是url,它不會。對不起,我已經更新了我的問題,並詳細說明了情況。 – Justin808

+0

@ justin808:你是不是嘗試使用'\「而不是'^'?但是現在你已經更新了你的問題,我發現你使用了這個HTML,我推薦使用HTML解析器來查找'href'屬性,和**不**正則表達式。請參閱:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

+0

它做到了。 – Justin808