使用正则表达式替换C#中的字符串

时间:2014-12-20 03:18:15

标签: c# .net regex

我有一个HTML文件,我需要重新介绍一些内容。

需要替换的文件的结构是:

<td>xxxx!!</td>

并替换为:

<td align="center">xxxx!!</td>

td之间的文字如下:

xxxx is an letter, number, period or space
!! are two exclamation points

如何在C#.net中替换这些?

2 个答案:

答案 0 :(得分:0)

您不应该尝试使用正则表达式解析HTML,而是使用HTML Parser。 对于C#,您可以使用http://htmlagilitypack.codeplex.com/

答案 1 :(得分:0)

首先,您需要添加Html Agility Pack:

Install-Package HtmlAgilityPack

你没有提供任何例子,因为我建立了我的。

   using HtmlAgilityPack;//use this namespace

   static void Main(string[] args)
    {
        string html = @"<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

<table>
    <tr>
        <td>A!!</td>
        <td>te2</td>
        <td>2!!</td>
        <td>te43</td>
        <td></td>
        <td> !!</td>
        <td>.!!</td>
        <td>te53</td>
        <td>te2</td>
        <td>texx</td>
    </tr>
</table>

</body>
</html>";

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);

        List<HtmlNode> tdNodes = doc.DocumentNode.Descendants().Where(x => x.Name == "td").ToList();

        foreach(HtmlNode node in tdNodes)
        {
            if (!node.InnerText.Contains("!!"))
                continue;

            node.Attributes.Add("align", "center");
        }

        string html2 = doc.DocumentNode.InnerHtml;
    }

如果有可能有另一个td !!在它们中为你的案例构建正则表达式,它应该查找。,数字,空格,字母,并且仅在这种情况下添加属性。