css - 在 CSS 属性值后强制使用单个空格的高效 RegEx

标签 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'

最佳答案

如果您在 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/

相关文章:

css - 安装后的命令 clean-css 在哪里?

php - 如何添加对小数点前 3 位正 float 的验证?

cordova - 检查所有平台的 PhoneGap 中的互联网连接吗?

html - 边框动画线性渐变垂直移动

html - 在 Angular 应用程序中,<a> 中的 href 不会重新加载页面

html - 使用 Div 元素向左或向右设置 CSS 内容(图像和文本)

javascript - JQuery 如何替换文本区域内的字符串?

python - 匹配多个字符串

html - Dreamweaver css 自动完成中缺少一些 Css 类

html - 有没有办法创建一个包含左对齐文本的最大宽度限制的自扩展层