正則表達式的困擾,請幫忙!!
現在 有 一個 html原始檔 我需要把其中的所有 html標記替換 成 空格 但是 要保留 </td> 這個標記 就是說 <html> </html> <body> </body> <tr> </tr> <td> 之類的全部不要 但是 </td> 這個標記 一個 都不能替換 這個 正則表達式 應該怎樣寫啊 請各位 熱心的 朋友 看清楚 我的 問題 然后 不吝賜教 謝謝
------解决方案--------------------把 <td> </td> 全部捕获,放入Matchs中,然后用一个foreach来把捕获组集合中所有的值全部加入一个string。
string content = " "; // 你的文件字符串
Regex htmlRegex = new Regex(@ " <td[^> ]*> .*? </td> ", RegexOptions.IgnoreCase | RegexOptions.Compiled);
MatchCollection mc = htmlRegex.Matches(content);
string result = " ";
foreach (Match m in mc)
{
result += m.Value+ "\n ";
}
Console.WriteLine(result);
Console.ReadKey();
------解决方案--------------------上面的表达式适合简单的嵌套,对复杂的嵌套无能为力。
简单嵌套
<table>
<tr>
<td width= "50 "> simple </td>
<td> way </td>
</tr>
<tr>
<td> good </td>
<td> </td>
</tr>
</table>
复杂多层嵌套
<table>
<tr>
<td> <table>
<tr>
<td> hard </td>
</tr>
</table>
</td>
</tr>
</table>
------解决方案--------------------楼主试下下面的程序能达到你要的要求吗?MyString就是要替换的字符串
string MyString = " <html> aaa <p> </td> <html> aaa <p> </td> <hhhhh a a > 2324 ";
Regex RegexMark = new Regex(@ " <[^( <|> )]+> ");
int x = RegexMark.Matches(MyString).Count;
int count = 0;
for (int n = 0; n < x; n++)
{
try
{
if (RegexMark.Matches(MyString)[count].ToString() == " </td> ")
{
count++;
continue;
}
}
catch
{
break;
}
string Space = " ";
for (int y = 0; y < Convert.ToString(RegexMark.Matches(MyString)[count]).Length; y++)
Space = Space + " ";
MyString = MyString.Replace(RegexMark.Matches(MyString)[count].ToString(), Space);
}
------解决方案--------------------起来后洗衣服去了^o^
楼主这个要求有点特别,呵呵,一般是单独保留 <br> 还有意义,保留 </td> 想不通是做什么,不过这个很简单了,是各位把它想复杂了
string yourStr = ................;
string result = Regex.Replace(yourStr, @ " <(?!/td> )[^> ]*> ", " ", RegexOptions.IgnoreCase);
另外楼主说把
html標記替換 成 空格
是替换成空格还是替换为空,这里替换为空了,如果是替换为空格,楼主自己加上吧