高效的RegEx强制CSS属性值后的单个空格

时间:2011-10-17 00:24:50

标签: css regex dreamweaver

由于我经常在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'

2 个答案:

答案 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}'作为输出。