我现在有这么一串字符串,
<table>
<tr>
<td>文件名称(<span>*</span>) </td>
<td>发送何地(<span>*</span>) </td>
<td>份数(<span>*</span>) </td>
<td>用章数(<span>*</span>) </td>
<td>删除 </td></tr>
<tr>
<td><textarea >er</textarea> </td>
<td><textarea >6</textarea> </td>
<td><input type="text" value=6 > </td>
<td><input type="text" value=5 > </td>
<td><img src="http://upm.eip.cmstest.com/style/img/icon_del.gif" /> </td></tr></table>因为我要将这么一串HTML字符串当成一个xml来解析,那么就必须格式规范,但是现在格式不规范。
我要将<input type="text" value=6 >这些更改成<input type="text" value="6" />这种标准格式。谁能告诉我正则怎么写?
我写了一个,但是不行,
Regex.Replace("上面的HTML字符串", "^value=[\d+]$","^value=\"[\d+]$\"", RegexOptions.IgnoreCase);

解决方案 »

  1.   

                string str = @"<table>
    <tr>
    <td>文件名称(<span>*</span>) </td>
    <td>发送何地(<span>*</span>) </td>
    <td>份数(<span>*</span>) </td>
    <td>用章数(<span>*</span>) </td>
    <td>删除 </td></tr>
    <tr>
    <td><textarea >er</textarea> </td>
    <td><textarea >6</textarea> </td>
    <td><input type=""text"" value=6 > </td>
    <td><input type=""text"" value=5 name=owen > </td>
    <td><input type=""text"" value=5 name=owen /> </td>
    <td><img src=""http://upm.eip.cmstest.com/style/img/icon_del.gif"" /> </td></tr></table>";
                string result = Regex.Replace(str, @"(?is)<input[^/>]+(?=>)", "$0/");
                result = Regex.Replace(result, @"(?is)(?<=<.*?=)[^'"">]+?(?=\s)", "\"$0\"");
                Console.WriteLine(result);
                /*
                <table>
    <tr>
    <td>文件名称(<span>*</span>) </td>
    <td>发送何地(<span>*</span>) </td>
    <td>份数(<span>*</span>) </td>
    <td>用章数(<span>*</span>) </td>
    <td>删除 </td></tr>
    <tr>
    <td><textarea >er</textarea> </td>
    <td><textarea >6</textarea> </td>
    <td><input type="text" value="6" /> </td>
    <td><input type="text" value="5" name="owen" /> </td>
    <td><input type="text" value="5" name="owen" /> </td>
    <td><img src="http://upm.eip.cmstest.com/style/img/icon_del.gif" /> </td></tr></table> 
                 */
      

  2.   

    楼上那位,你的正则有问题,虽然value=5改成了value=“5”,但是我其他标签的属性你全部给弄了比如style=display:none,原本有引号的给我弄没了
      

  3.   

    TRY
                string html = @"<table>
                                        <tr>
                                        <td>文件名称(<span>*</span>) </td>
                                        <td>发送何地(<span>*</span>) </td>
                                        <td>份数(<span>*</span>) </td>
                                        <td>用章数(<span>*</span>) </td>
                                        <td>删除 </td></tr>
                                        <tr>
                                        <td><textarea >er</textarea> </td>
                                        <td><textarea >6</textarea> </td>
                                        <td><input type=""text"" value=6 > </td>
                                        <td><input type=""text"" value=5 > </td>
                                        <td><img src=""http://upm.eip.cmstest.com/style/img/icon_del.gif"" /> </td></tr></table>";            Regex reg = new Regex(@"(?<=<[^<]+?=)\b[^\s>]+");
                Console.WriteLine(reg.Replace(html,e=>"\"" + e.Value + "\""));
      

  4.   

    可能也是我说的复杂了点,我的目的,是要把这一串字符串当作一个XML来解析的,当然<input type="text" value=3>这种在html中能正常显示,但是在C#解析XML的程序中首先就无法加载,还怎么解析,所以,必须要遵守XML的标准格式,必须要将其改成<input type="text" value="3" />,这样才能正常的解析数据。