因为我经常在 Dreamweaver 中进行基本的 CSS 工作...DW 代码完成倾向于在冒号后直接添加 CSS 属性值而没有空格...{attr:value}。由于挑剔的浏览器呈现问题,这引起了一些真正的调试麻烦,我经常发现自己不得不在冒号后手动添加空格。 [^D.R.Y.]
我目前正在构建一个简单的正则表达式片段,我可以运行它来正确格式化 CSS ...
我目前所拥有的似乎有效,但我认为它有点粗糙......我基本上只是想看看是否有任何建议......这就是我所拥有的......
(.*?(?={).*?:)([^\s][\w!#$%&'*+/=?^_`{|}~-]*.*?;})
并用...替换行
\s$2
► 澄清 ► 下面我对上面的解决方案做了一些改进......我仍然认为它需要改进......
(?:(?={*))(?:\s*?)([\s\r\n]*?\b[\w!#$%&'*+/=?^_`|~-]*:(?!.*{))(?!\s)(.*?;)
并替换为...
$1 $2
► Perl 版本 ►
Perl 使这方面的工作变得非常轻松......
perl -pi -e 's/^(.*?:)([^\s].*?;).*$/$1 $2/ig'
最佳答案
如果您在 C# 程序中运行您的正则表达式片段,我有适合您的解决方案:
Regex regex = new Regex(@"(?<=\{{1}[\s\r\n]*)((?<Attribute>[^}:\n\r\s]+):\s+(?<Value>[^;]*);[\s\r\n]*)*(?=\})");
regex.Replace(input, match =>
{
var replacement = string.Empty;
for (var i = 0; i < match.Groups["Attribute"].Captures.Count; i++)
{
replacement += string.Format(CultureInfo.InvariantCulture, "{0}: {1}\r\n", match.Groups["Attibute"].Captures[i], match.Groups["Value"].Captures[i]);
}
return replacement;
});
关于css - 在 CSS 属性值后强制使用单个空格的高效 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788319/