2011-12-19 43 views
0

我需要創建一個簡單的標記修復,我已經做了所有我需要的大膽和斜體等。但是,這比我迄今爲止做的有點困難,我不知道如何做到這一點。基本上我的輸入是非常簡單的:查找和替換 - 我應該使用Regex嗎?

[imgGroup="group1"] 
image1.jpg 
[/imgGroup] 

正如你可以看到我傳遞一個PARAM是group1和裏面我有image1。我需要將其轉換成內部有這種形象,組相對的標籤,像這樣的鏈接:

<a href="image1.jpg" rel="group1" > 
    <img src="image1.jpg" /> 
</a> 

我認爲我會需要使用正則表達式對於這個問題,但是我只知道如何尋找的東西在2個標籤之間,不是那麼多的這個問題...我用C#使用ASP.NET MVC3。

+3

爲什麼要重新創建另一個標記而不是使用已經設計好的工具,如[markdownsharp](http://code.google.com/p/markdownsharp/)?不要重新發明輪子。不要使用正則表達式。你會被黑客俘獲,因爲幾乎不可能預見到所有可能的情況。 – 2011-12-19 13:33:56

+0

是的,有。我正試圖通過Shadobox.js插件來傳遞圖片。它需要特定的標記 - http://www.shadowbox-js.com/usage.html – sed 2011-12-19 13:35:24

+0

祝你好運。 – 2011-12-19 13:37:25

回答

0

你可以使用命名組在正則表達式匹配,那麼你只需將其重新組裝成你想要的順序:

var regex = new RegEx(("$1(\d\s)$2([a-z])"); // Set up your regex with named groups 
var result = regex.Replace("inputstring", "$2 $1"); // Replace input string with the given text, including anything matched in the named groups $1 and $2 

即使被警告,正則表達式的東西像URL和HTML的解析可以非常,很快就會變成超出你最瘋狂夢想的恐怖;)

祝你好運!

Named groups for RegEx in dot net

+0

謝謝,但因爲我將是唯一一個能夠訪問此標籤的人,所以我認爲它會很好。 – sed 2011-12-19 13:44:42

0

這裏是我的建議給你:

var regex = new Regex(@"\[imgGroup=" + "group1" + @"\]\s*(?<Content>\S*)\s*\[imgGroup\]"); 
var newValue = regex.Replace(oldValue, @"<a href=""$1"" rel=""group1"" ><img src=""$1"" /> </a>); 

這應該做你所期望的。