模式匹配css规则

我有以下模式:</ p>

  [\ {\  }]。* [\ {}] 
</ code> </ pre>

使用以下测试字符串(如果需要可以提供更多):</ p>

 }。prop {hello:ars;} //不匹配
} #prop {} //应匹配
} .prop #prop {} //应匹配
</ code> < / pre>

模式的目的是找到空的css规则集。 有人可以建议我如何排除第二组括号中的字符匹配? 当我接近解决方案时,我将更新模式。</ p>

编辑:
on http://gskinner.com/RegExr/
this pattern: [}]。* [\ {] {1} [/}] {1} </ code>
似乎有 由于我不明白的原因转移到php时它会破坏所需的结果。</ p>

编辑:
首先道歉,如果这应该是一个单独的问题。
在第一个使用模式 在php中编辑:</ p>

  $ pattern =“/ [/] {。{[{{{{{{{{{{{{{{{{{{  $ pattern,$ new_css,$ p); 
print_r($ p);
</ code> </ pre>

当$ new_css是包含上传的css文件内容的字符串时 空规则集,永远不会填充$ p。 但我知道这种模式还可以。 任何人都可以看到问题所在吗?</ p>

编辑:最终解决方案</ strong> </ p>

  //取出其他不需要的内容 characters 
$ pattern =“/}([。\\w]\w+\s*)+{}/";
//做两次以击败任何变形
$ new_css = preg_replace($ pattern ,'}',$ new_css);
$ new_css = preg_replace($ pattern,'}',$ new_css);
</ code> </ pre>
</ div>

展开原文

原文

I have the following pattern:

[\{\}].*[\{\}]

With the following test strings (can provide more if needed):

}.prop{hello:ars;} //shouldn't match
}#prop{} //should match
}.prop #prop {} //should match

The purpose of the pattern is to find empty css rulesets. Can someone suggest how I go about excluding matches with characters between the second set of brackets? I will be updating the pattern as I get closer to a solution.

edit: on http://gskinner.com/RegExr/ this pattern: [\}].*[\{]{1}[/}]{1} seems to have the desired result although it is breaking when transfered to php for reasons I don't understand.

edit: first apologies if this should be a separate question. Using the pattern in the first edit in php:

    $pattern = "/[\}].*[\{]{1}[/}]{1}/";
    preg_match_all ($pattern, $new_css, $p);
    print_r($p);

When $new_css is a string of the content of an uploaded css file containing empty rulesets, $p is never populated. Yet I know this pattern is ok. Can anyone see what the issue is?

edit: final solution

//take out other unwanted characters
        $pattern = "/\}([\.#\w]\w+\s*)+{}/";
        //do it twice to beat any deformation
        $new_css = preg_replace ($pattern, '}', $new_css);
        $new_css = preg_replace ($pattern, '}', $new_css);

doudun2565
doudun2565 去年我在php中使用.css文件做了类似的事情,删除了所有注释,标记了文本并检测了所有颜色定义。所以我也很好奇有人会帮你找到一些解决方案。
8 年多之前 回复
doumalu9257
doumalu9257 我想得到类/id以及括号
8 年多之前 回复
douchushao7799
douchushao7799 为什么\{\s*\}不起作用?
8 年多之前 回复

2个回答



尝试模式:'/}([\。#] \ w + \ s *)+ {} /'< / code> </ p>

  $ new_css =“{}。prop {hello:ars;} 
{} #prop {} //应匹配
} .prop #prop {} //应匹配
} .prop {aslkdfj}
} .prop {}
“;

$ pattern ='/}([\。#] \ w + \ s *)+ {} /';
npreg_match_all($ pattern,$ new_css,$ p);
print_r($ p);
</ code> </ pre>

输出:</ p>
\ n

  Array 

[0] =&gt;数组

[0] =&gt;} #prop {}
[1] =&gt;} .prop #prop { }

[1] =&gt;数组

[0] =&gt; #prop
[1] =&gt; #prop


</ </ code> </ pre>
</ div>

展开原文

原文

Try the pattern: '/}([\.#]\w+\s*)+{}/'

$new_css = "{}.prop{hello:ars;}
{}#prop{} //should match
}.prop #prop {} //should match
}.prop { aslkdfj}
}.prop { }
";

$pattern = '/}([\.#]\w+\s*)+{}/';
preg_match_all ($pattern, $new_css, $p);
print_r($p);

This outputs:

Array
  (
    [0] => Array
    (
      [0] => }#prop{}
      [1] => }.prop #prop {}
    )

    [1] => Array
    (
      [0] => #prop
      [1] => #prop
    )
  )

dtpk04526211
dtpk04526211 对上面的修正,它不捕获诸如body,ul,li等的原生元素。
8 年多之前 回复
du13932014807
du13932014807 回复较晚,抱歉。 该模式略有限制,只捕获第一个类/ id名称。 它在更复杂的选择器上失败了。 我会看看我是否可以调整它。
8 年多之前 回复



尝试在正则表达式周围使用单引号,或将 \ </ code>字符加倍。 PHP在双引号字符串中处理 \ </ code>的方式是 \ {</ code>变为 {</ code>,打破了正则表达式。</ p>
</ DIV>

展开原文

原文

Try using single quotes around the regex, or doubling the \ characters. The way PHP handles \ in double-quoted strings is that \{ becomes {, breaking the regex.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐