-3

我不是一个正规的前章。因此,如果有人可以帮助我,我将不胜感激。

删除空格的正则表达式

javascript正则表达式仅删除完整的单词

正则表达式用空格替换非字母字符

正则表达式删除一行中的空格并提取特定列

上面的链接对我没有帮助

然而似乎很接近

我有这个字符串

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

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

  1. “类”
  2. “td类”
  3. A类

类名后的空格未确定

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

我想删除 > 符号之前的空格

什么正则表达式会匹配这个条件?


我的代码

 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!";
        }

    }
4

2 回答 2

2

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

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

于 2013-03-19T14:42:08.873 回答
1

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

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>
于 2013-03-19T14:43:08.433 回答