【问题标题】:Parsing Specific CSS with Regex使用正则表达式解析特定的 CSS
【发布时间】:2011-10-09 01:41:36
【问题描述】:

我正在努力想出正确的正则表达式来解决我的问题。我需要从这个 Sass 文件中解析变量及其值。变量总是以 $ 开头并以 : 结尾,并且它们的值在 : 之后以 ; 结尾,很像 CSS。

我正在使用 .Net 的正则表达式解析器,并针对这个有用的正则表达式工具进行测试:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

我可以用这个匹配字符串找到变量

\$[\w\d-]*:

但是,我怎样才能找到匹配的值对,而不是从其他 css 中提取误报,例如“10px”

/*
Theme Name:   Huff
*/

// Particle Imports
@import "blueprint";

// Blueprint Variables
$blueprint_grid_margin: 10px;

// Site Specific Styles
$primary-color: #a1bfc2;
$link-color: #AFBDD2;

html {
  font-smooth: always;
}


body.bp {
  @include ui;
  overflow-x: hidden;
  background-color: $secondary-color;
}

【问题讨论】:

  • 只使用现有的 CSS 解析器?

标签: c# .net css regex


【解决方案1】:

你想使用这样的组。

\$([\w\d-]*):\s*(.*)?\s*;

然后匹配所有,组 1 具有名称,而组 2 具有每个匹配项的值。

【讨论】:

    【解决方案2】:

    试试:

    (\$[\w\d-]*):\s*([^;]+);
    

    $1 将包含变量名,$2 将包含值。该值将包括任何引号、空格等,除了直接在“:”之后修剪的空格。

    【讨论】:

    • 当我对 derekslager.com/blog/posts/2007/09/… 运行它时,我得到 0 个匹配项。
    • 您需要 * 而不是 ?对于[\w\d-]
    • 我从错误的剪贴板缓冲区粘贴,已修复...但看起来我为时已晚。
    猜你喜欢
    • 2010-12-09
    • 2015-05-30
    • 1970-01-01
    • 2010-09-19
    • 2011-05-24
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多