2011-04-19 2 views
0
<p <%=foo1%> <%=foo2%> > 

    <h3><%=bar1%></h3> 

    <h4><%=bar2%></h4> 

</p> 

정규 experssion을 찾고 있는데 그 결과는 속성으로 선언 된 값이므로 foo1과 foo2가되어야합니다. bar1과 bar2는 속성으로 선언되지 않았으므로 캡처되지 않아야합니다.html 속성 내에서 캡쳐하는 방법

저는 루비 1.8.7을 사용하고 있습니다.

+0

'캡처 중'이란 무엇을 의미합니까? –

+1

첫 번째 답변은 여기를 참조하십시오 : [RegEx는 XHTML 자체 포함 태그를 제외한 공개 태그와 일치] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Svante

답변

0

같은

-1

이 같은 ..

\<\w+\s((.*)\s?)\> 

이것은 당신이 출력에

<(?:[^>]*<%=(.*)%>)+[^>]*> 
0

Maaaybe 뭔가를 정규식을 실행한다고 가정 약이 경우 어디를 얼마나 네가 두 번이나 하는게 더 낫다고 생각해. 먼저 태그 안에있는 속성 인 데이터 값을 모두 < %> 추출하십시오. 그런 다음 < % 및 %>을 추출하십시오.

예를 들어 : 당신이 등,에서는 foo2를 FOO1 부여합니다 첫 번째 정규 표현식의 출력에 간단한

<%=(.*?)%> 

, 그리고

<%=foo1%> <%=foo2%> 

을 :

<[^>]*?((?:<%=[^%]*%>\s*)+)[^<]*> 

당신에게 제공합니다 나는 하나의 결합 된 구조를 만들려고 노력했지만, 내가 할 수있는 유일한 방법은 보이지 않는 동작을 사용하는 것이다. 나는 Ruby에서 지원되는 것으로 생각하지 않는다. 그리고 look-behind가 같은 시점에서 여러 번 일치해야하기 때문에, 대부분의 엔진이 그것을 쫓아 낼 것이라고 나는 믿는다.

0

이 방법이 유용할까요?

/(?:<|\G)[^<>]*?<%=([^<>]*?)%>/ 
+0

나는 누구도'\ G'가 무엇인지 아는 사람이 있는지 알고 있습니다. 모든 사람의 대답은 받아 들여지는 것으로 보였습니다. – sawa

+0

흠 나는 왜 모두가 downvoted 얻었는지 이해가 안 :/- 완벽하게 유효한 제안 무엇 upvote을 가지고! – Dve

+0

@Dve 감사합니다. – sawa