2011-12-19 42 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>); 

这应该做你所期望的。