使用Regex替换匹配模式的字符串

时间:2015-04-27 19:12:19

标签: c# regex xml

我想在以下XML中的每个标记中添加param。 我想像这样使用C#正则表达式。

<span></span>

原始XML:

Regex.Replace(xml, @"<*>", @"<span>" + @"<*>" + "</span>")

修改后的XML

<div id="Content">
  <p>1</p>
  <h2>1</h2>
  <h2>2</h2>
</div>

3 个答案:

答案 0 :(得分:1)

我建议避免在xhtml中使用正则表达式,因为众所周知有更好的工具。您可以使用xml解析器,xquery,xpath等。

但是,如果您仍然必须使用或想要使用正则表达式,那么您必须使用捕获组并使用非贪婪的正则表达式。你可以用这个:

(<.*?>)

<强> working demo

答案 1 :(得分:0)

这是一个如何实现这个或多或少安全的工作示例:

var xml = "<div id=\"Content\">\r\n  <p>1</p>\r\n  <h2>1</h2>\r\n  <h2>2</h2>\r\n</div>";
var result = Regex.Replace(xml, @"<[^>]+?>", @"<span>$&</span>");

使用的正则表达式是<[^>]+?>,只匹配<,然后是>>之间的任何内容。

输出:

enter image description here

答案 2 :(得分:-1)

这个怎么样

&#13;
&#13;
            string input = "<div id=\"Content\">" +
                           "<p>1</p>" +
                           "<h2>1</h2>" +
                           "<h2>2</h2>" +
                           "</div>";
            string pattern = @"(</?\w+>)";

            string output = Regex.Replace(input, pattern, "<span>$1</span>");
            output = "<span>" + output + "</span>";​
&#13;
&#13;
&#13;