使用正则表达式删除特定空格

时间:2013-03-19 14:26:26

标签: c# asp.net regex string

我不是一个小伙子。如果有人可以帮我这个,我真的很感激。

regular expression to remove a space

javascript regular expression remove complete words only

Regular Expression to replace non alpha characters with spaces

regular expression to remove white spaces in a line and extract specific columns

以上链接不帮助我

然而this似乎很接近

我有这个字符串

<tr class="trClass"    >  <td class="tdClss"  > adasd   
<span class=classA  >     as  da  "sads "sd</span> </td> </tr>

上面的html字符串中有三个类。

  1. “trClass”
  2. “tdClss”
  3. CLASSA
  4. 班级名称后的空格未确定

    天气类名称是否在引用中是否未确定

    我想删除&gt;之前的空格登录

    什么正则表达式符合此条件?


    我的代码

     public static string Flatten(string inputString)
        {
            // remove line breaks
            string rawInput = inputString.RemoveLineBreaks().Trim();
    
            string filteredInput = Regex.Match(rawInput, "<tr.+?>.*</tr>").ToString();
    
            if (filteredInput.IsNotNullOrEmpty())
            {
                // remove space between end and start tags
                filteredInput = Regex.Replace(filteredInput, ">.+?<", delegate(Match match)
                    {
                        string v = match.ToString();
                        return ">" + v.Substring(1, v.Length - 2).Trim() + "<";
                    });
    
                // remove space between attribute and closing tags
                filteredInput = Regex.Replace(filteredInput, "\t>", delegate(Match match)
                {
                    //string v = match.ToString();
                    return ">";
                });
    
    
                return filteredInput;
            }
            else
            {
                return "Invalid HTML Table Row!";
            }
    
        }
    

2 个答案:

答案 0 :(得分:2)

根据您发布的内容,模式+>将与您指定的条件相匹配。换句话说,您正在寻找一个或多个空格(+),后跟一个结束尖括号(>)。您可以使用Regex.Replace来电并传递>作为该模式的替代品。

预先警告:使用正则表达式操纵HTML可能会非常危险。如果您的字符串中有任何未编码的>,那么它仍可能与上述模式匹配。对于你上面显示的内容,我怀疑你会没事。

答案 1 :(得分:1)

如果您只是使用XDocument将其加载到XDocument.Parse(string),它会为您解决此问题。

var test = XDocument.Parse("<tr class=\"trClass\"    >  <td class=\"tdClss\"  > adasd   <span class=\"classA\"  >     as  da  \"sads \"sd</span> </td> </tr>");
Console.WriteLine(test);

您不需要使用正则表达式。这给你如下:

<tr class="trClass">
    <td class="tdClss"> adasd   <span class="classA">     as  da  "sads "sd</span></td>
</tr>