【发布时间】:2011-03-29 07:42:37
【问题描述】:
我正在尝试删除出现在<pre></pre> 标签之间的<br /> 标签。我的字符串看起来像
string str = "Test<br/><pre><br/>Test<br/></pre><br/>Test<br/>---<br/>Test<br/><pre><br/>Test<br/></pre><br/>Test"
string temp = "`##`";
while (Regex.IsMatch(result, @"\<pre\>(.*?)\<br\>(.*?)\</pre\>", RegexOptions.IgnoreCase))
{
result = System.Text.RegularExpressions.Regex.Replace(result, @"\<pre\>(.*?)\<br\>(.*?)\</pre\>", "<pre>$1" + temp + "$2</pre>", RegexOptions.IgnoreCase);
}
str = str.Replace(temp, System.Environment.NewLine);
但这会替换整个文本中第一个和最后一个<pre> 之间的所有br> 标签。因此我的最终结果是:
str = "Test<br/><pre>\r\nTest\r\n</pre>\r\nTest\r\n---\r\nTest\r\n<pre>\r\nTest\r\n</pre><br/>Test"
我希望我的结果是
str = "Test<br/><pre>\r\nTest\r\n</pre><br/>Test<br/>---<br/>Test<br/><pre>\r\nTest\r\n</pre><br/>Test"
【问题讨论】:
-
字符串的格式是不是一直都是一样的,也就是有规律的吗?或者您是否试图从可能具有完全不同结构的整个 HTML 页面中获取此信息?
-
正则表达式和 html 是不是好朋友的说法很多。它可能适用于一些有限的场景,但我个人会在这里使用解析器/DOM/任何东西。
-
好的,所以如果我同意用正则表达式解析 html 不是一个好的选择。那么正则表达式是否只会解析第一个和最后一个
<pre>标签之间的标签? -
“\
”如何匹配“
”?