繁体   English   中英

使用正则表达式将字符串替换为匹配模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM