2011-03-30 4 views
1

기본적으로 CSS 파일의 모든 CSS 선택기와 패턴 매치가 필요합니다. 이상적으로이 규칙 (CSS 파일에서 누군가가 만들 수있는 규칙)을 모두 얻을 수 있어야합니다. 그게 도움이 자바 스크립트 CSS 파서에 대한 것입니다.자바 스크립트 RegExp와 일치하는 CSS 셀렉터

#div div .child { 

} 

.somediv, #someotherdiv { 

} 

body:hover { 

} 

내가 가지고 올 수 있었던 가장 지금까지 뭔가 같은 :

/(#|\.|[a-zA-Z])(.*) {/g 

그러나이 그냥 할 ...처럼 하나의 선택을 필요로하는 것보다 더 많은 선택 끝, 규칙은 모두, 다음 선택자의 시작은 "{"입니다. 이것으로 몇 시간 동안 노력 해왔다. 미리 감사드립니다!

답변

2

셀렉터 자체에 신경 쓰면 조금 더 가까이 갈 수 있습니다.

/(#|\.|[a-zA-Z])(.*?) {/g 

는 '원 그런 식 : 나는

var css = ...some css string... 
var found = css.replace(/{([^}]*)}/gm,"{}").match(/([#|\.]?)([\w|:|\s|\.]+)/gmi); 
+0

위대한 일을했습니다. 내가 추가해야했던 것은 빠른 "{"끝에 그것이 작동하고 있다는 것이 었습니다. 고마워. –

0

중괄호 일치를 수행하려면 일반 old regex에서 제공하는 것보다 더 설명이 필요한 언어가 필요합니다. http://www.regular-expressions.info/named.html에는 "명명 된 그룹"문제를 다루기 위해 다른 프로그래밍 언어가 무엇인지 제시 한 몇 가지 예가 있습니다.

당신이하고있는 일을 위해 정규 표현식이 아니라 파서가 필요합니다.

1

내가 게으른 스타로 변경하고 다시 시도 것 ... 그것은 하나의 공간에 일치하는 생각 때문에 아직 좀 더 미세 조정을 사용할 수 있습니다 욕심이 많다.

+0

이것은 내가 필요로하는 정규 표현식이 아니지만, 당신의 게으른 별은 내가해야만했던 또 다른 정규 표현식을 도왔다. 그래서 +1 선생님! –

0

. *을 부인 문자 클래스로 바꾸려고 했습니까?

/(#|\.|[a-zA-Z])([^{]*) {/g 
관련 문제