2010-02-16 79 views
2

试图获得一个正则表达式,我可以从下面的例子中得到一个样式属性值应该解释一下我的问题。正则表达式HTML样式属性

源:字体大小:11磅;字型颜色:红;文本对齐:左;

想说给我..

  1. font-size和回报11磅
  2. 字体颜色,并返回红
  3. 文本对齐,返回左

可有人点我在正确的方向

感谢

+2

什么语言? regexs不都是一样的... – harschware

+0

寻找一个JavaScript实现,但可以在港口当然 – monkeylee

回答

0

从逻辑上讲,你会想:

[精确短语] + 1个冒号+ 0或多个空格+ 0或更多字符,直到达到第一个分号或关闭报价。

我认为这将让你在正确的方向前进:

font-size[:][\s]*[^;'"]* 

陷阱:

  • 收盘报价可能是单面或双面并有可能成为内的有效报价(即,例如引用背景图片网址)

  • 这完全取决于不用写在速记中的样式

3

这个问题让我想起了杰夫阿特伍德的博客文章,Parsing Html The Cthulhu Way。这是不完全一样的问题,但其同样的情绪。不要使用正则表达式解析CSS!有大量的图书馆为你做这个。

0
var regex = new Regex(@"([\w-]+)\s*:\s*([^;]+)"); 
var match = regex.Match("font-size:11pt;font-color:red;text-align:left;"); 
while (match.Success) 
{ 
    var key = match.Groups[1].Value; 
    var value = match.Groups[2].Value; 
    Console.WriteLine("{0} : {1}", key, value); 
    match = match.NextMatch(); 
} 

编辑:这不应该是一个 '完整' 的解决方案。它可能做的工作为案件的80%,而以往一样,最后20%将是幅度更昂贵;-)

+0

任何C#代码,它无法比拟的'内容:“;)”;'属性。 – kennytm