dptj13337 2012-07-18 16:03
浏览 135
已采纳

模式匹配css规则

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);
  • 写回答

2条回答 默认 最新

  • drne47241 2012-07-18 17:26
    关注

    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
        )
      )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64