在标签之间查找文本并将其与标签一起替换

时间:2012-01-15 10:52:11

标签: c# .net regex

我使用以下正则表达式模式在[code][/code]标记之间查找文字:

(?<=[code]).*?(?=[/code])

它会返回包含在这两个标签之间的任何内容,例如:这个:[code]return Hi There;[/code]给了我return Hi There;

我需要有关正则表达式的帮助,才能用标记替换整个文本

3 个答案:

答案 0 :(得分:6)

使用此:

var s = "My temp folder is: [code]Path.GetTempPath()[/code]";

var result = Regex.Replace(s, @"\[code](.*?)\[/code]",
    m =>
        {
            var codeString = m.Groups[1].Value;

            // then you have to evaluate this string
            return EvaluateMyCode(codeString)
        });

答案 1 :(得分:4)

我会使用HTML Parser。我可以看到你想要做的事情很简单,但这些事情习惯于加班加倍。对于那些必须在将来维护代码的穷人来说,最终的结果是非常痛苦。

看看有关HTML解析器的这个问题 What is the best way to parse html in C#?

<强> [编辑]
以下是对所提问题的更为相关的答案。 @Milad Naseri正则表达式是正确的你只需要做

之类的事情
string matchCodeTag = @"\[code\](.*?)\[/code\]";
string textToReplace = "[code]The Ape Men are comming[/code]";
string replaceWith = "Keep Calm";
string output = Regex.Replace(textToReplace, matchCodeTag, replaceWith);

查看此网站了解更多示例
http://www.dotnetperls.com/regex-replace
http://oreilly.com/windows/archive/csharp-regular-expressions.html

希望这有帮助

答案 2 :(得分:1)

您需要使用反向引用,即将\[code\](.*?)\[/code\]替换为类似<code>$1</code>的内容,它将为您提供所附的[code][/code]标记所包含的内容 - 对于此示例 - { {1}}代码。