查找和替换 - 我应该使用Regex吗?
问题描述:
我需要创建一个简单的标记修复,我已经做了所有我需要的大胆和斜体等。但是,这比我迄今为止做的有点困难,我不知道如何做到这一点。基本上我的输入是非常简单的:查找和替换 - 我应该使用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。
答
你可以使用命名组在正则表达式匹配,那么你只需将其重新组装成你想要的顺序:
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的解析可以非常,很快就会变成超出你最疯狂梦想的恐怖;)
祝你好运!
+0
谢谢,但因为我将是唯一一个能够访问此标签的人,所以我认为它会很好。 – sed 2011-12-19 13:44:42
答
这里是我的建议给你:
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>);
这应该做你所期望的。
为什么要重新创建另一个标记而不是使用已经设计好的工具,如[markdownsharp](http://code.google.com/p/markdownsharp/)?不要重新发明轮子。不要使用正则表达式。你会被黑客俘获,因为几乎不可能预见到所有可能的情况。 – 2011-12-19 13:33:56
是的,有。我正试图通过Shadobox.js插件来传递图片。它需要特定的标记 - http://www.shadowbox-js.com/usage.html – sed 2011-12-19 13:35:24
祝你好运。 – 2011-12-19 13:37:25