我正在创建一个使用HTML的正则表达式库(我会在完成后将它发布在MSDN代码上)。其中一个方法在结束标记之前删除任何空格。
<p>See the dog run </p>
它将消除结束段落之前的空格。我正在使用这个:
public static string RemoveWhiteSpaceBeforeClosingTag(string text)
{
string pattern = @"(\s+)(?:</)";
return Regex.Replace(text, pattern, "</", Singleline | IgnoreCase);
}
正如你所看到我用&lt; /替换空格,因为我似乎无法匹配空格并排除结束标记。我知道有办法 - 我只是没想出来。
答案 0 :(得分:11)
\s+(?=</)
是你所追求的表达方式。它表示一个或多个空白字符后跟
(?=...)
是positive lookahead。这不会包含在表达式中; (?:...)
是non-capturing group。这将包含在表达式中。尽管如此,正则表达式是一种处理HTML的片状且容易出错的方式,因此如果有的话应该谨慎使用。
答案 1 :(得分:3)
你想要一个前瞻(?=)模式:
\s+(?=</)
可以用“”替换