由于我经常在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'
答案 0 :(得分:1)
如果你在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;
});
答案 1 :(得分:0)
如果我理解正确,这应该有用(JavaScript)
'{attr:value}'.replace(/({.*?:)\s*/g,'$1 ')
这会将'{attr: value}'
作为输出。