Casar com apenas linha de css

8 views
Skip to first unread message

krause

unread,
Jul 23, 2009, 1:45:06 PM7/23/09
to Expressões regulares
Olá,

eu fiz uma expressão para casar apenas com linhas de CSS.

^(\s*[^\{]+?)\s*\{([^\}]+)(\}.*)$

vou separa pra ficar mais de boa.

1. ^
2. (\s*[^\{]+?)
3. \s*\{
4. ([^\}]+)
5. (\}.*)
6. $

linha 2: para casar com tudo antes da chave
linha 4: para casar com tudo dentro das chaves
linha 5: para casar com tudo da chave pra frente

o meu problema é que essa expressão casa com ela mesmo. Ai quando eu
testo ela em uma linha tipo essa:

var coisas = css.match(/^(\s*[^\{]+?)\s*\{([^\}]+)(\}.*)$/);

ela casa com a linha toda.

ai tem uma dica pra casar apenas com css puro:

seletor { propriedades }

obrigado!

Felipe Pena

unread,
Jul 23, 2009, 3:03:02 PM7/23/09
to expressoes...@googlegroups.com
2009/7/23 krause <web.k...@gmail.com>:

>
> Olá,
>
> eu fiz uma expressão para casar apenas com linhas de CSS.
>
> ^(\s*[^\{]+?)\s*\{([^\}]+)(\}.*)$
>
> vou separa pra ficar mais de boa.
>
> 1. ^
> 2. (\s*[^\{]+?)
> 3. \s*\{
> 4. ([^\}]+)
> 5. (\}.*)
> 6. $
>
> linha 2: para casar com tudo antes da chave
> linha 4: para casar com tudo dentro das chaves
> linha 5: para casar com tudo da chave pra frente
>
> o meu problema é que essa expressão casa com ela mesmo. Ai quando eu
> testo ela em uma linha tipo essa:
>
> var coisas = css.match(/^(\s*[^\{]+?)\s*\{([^\}]+)(\}.*)$/);
>
> ela casa com a linha toda.
>

O que você tem que fazer, é primeiro casar somente a parte referente ao CSS.
E então aplicar sua regex. ;-)

--
Regards,
Felipe Pena

Gustavo Krause

unread,
Jul 23, 2009, 3:46:39 PM7/23/09
to expressoes...@googlegroups.com
Um amigo meu aqui do serviço me deu uma ajuda.

a expressão ficou o seguinte.

/^(\s*[a-z0-9_:\[\]=#\.\*>\(\)\-\^~"'\|\$\+ ]+?)\s*\{([^\}]+)(\}.*)$/i

--
Gustavo Krause, Desenvolvedor Front-end
http://www.webkrause.com/ - http://www.webstandards.blog.br/
Reply all
Reply to author
Forward
0 new messages