[英]Replace string with matching pattern using Regex
我想在以下XML中为每个标签添加<span></span>
。 我想像这样使用C#正则表达式。
Regex.Replace(xml, @"<*>", @"<span>" + @"<*>" + "</span>")
原始XML:
<div id="Content">
<p>1</p>
<h2>1</h2>
<h2>2</h2>
</div>
修改后的XML
<span><div id="Content"></span>
<span><p></span>1<span></p></span>
<span><h2></span>1<span></h2></span>
<span><h2></span>2<span></h2></span>
<span></div></span>
我建议避免将regex与xhtml一起使用,因为众所周知,有更好的工具。 您可以使用xml解析器,xquery,xpath等。
但是,如果您仍然必须使用或想使用正则表达式,则必须使用捕获组,还必须使用非贪婪的正则表达式。 您可以使用此:
(<.*?>)
这是一个或多或少安全的工作示例:
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>");
所使用的正则表达式是<[^>]+?>
只是匹配<
,那么任何不是>
达>
。
输出:
这个怎么样
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>";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.