思路:
- 首先获取所有被标签包裹的内容
var regex9 = new Regex("<([a-z]*)(?:\\s+?[^>]*?)?>[\\s\\S]*?<\\/\\1>", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);
var ma = regex9.Matches(content);
注意:这里不能用<([a-z]*)(?:\\s+?[^>]*?)?>.*?<\\/\\1>
,这样会忽略掉换行符
2.将有标签包裹的替换成特殊字符,最好替换成这样的,切割的时候必将方便
var newStr = regex9.Replace(content, "|##|");
3.切割替换后的newStr
var arr = newStr.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
4.循环拼接字符串
foreach (var s in arr)
{
if (s.Equals("##"))
{
var str = ma[count].Value; //count 对应的是第一步的ma,匹配到的标签的位置
newC += str;
count++;
}
else
{
newC += "<p>" + s + "</p>";
}
}
最后,newC就是将未被包裹的内容都用p标签包了起来
完结撒花~