假设我已获得以下字符串以匹配:
#sidebar h1 ul li{ #a:hover; height : 100px ;color: #fffff ; font-family: @fonts; }
我想要的是只匹配花括号{}内的空格,这些空格不是用文字两边括起来的。
我目前的正则表达式如下:
( (?!\w)|(?<!\w) )
但它也匹配括号外的字符。我试着环顾四周,但它并没有像我想象的那样正常运行而且我只是在吸食正则表达式..
我想从css类内容中删除所有空格,以便将字符串压缩为:
#sidebar h1 ul li{#a:hover;height:100px;color:#fffff;font-family:@fonts;}
顺便说一下,我正在使用.NET Regex引擎,所以如果有人需要快速测试环境,我发现这个Silverlight非常方便:http://www.regexlib.com/RESilverlight.aspx
答案 0 :(得分:2)
鉴于某些CSS元素具有多字值(border: 1px solid red
),您描述的空白删除过程将是灾难性的。我建议您只删除以下位置的空格:
幸运的是,由于CSS的语法,这些模式都不会出现在{...}
部分之外。不幸的是,我不知道.NET正则表达式引擎的细节,也许这会起作用:
( +(?=[};:])|(?<=[{;:]) +)
答案 1 :(得分:1)
试试这个:
Regex.Replace(str, @"(?:\B\s+|\s+\B)(?=[^{}]*\})", "")
但如果@media部分(即嵌套大括号)中有规则,或者使用大括号作为元字符的语音规则,这可能会被愚弄。