2010-11-30 3 views
0

저는 정규식에 관해서는 초보자입니다. 어디서부터 시작해야할지 모르겠습니다. 나는 약간의 HTML 코드는 웹 페이지에서 긁어 변수에 저장해야하고, 이런 식으로 뭔가 같습니다정규 표현식을 사용하여이 데이터를 긁거나 분석 할 수 있습니까?

<thead><tr> 
<th></th> 
<th>GENERAL INFORMATION</th> 
<th></th> 
<th>DETAILED DATA</th> 
</tr></thead> 
<tbody><tr> 
<th>ID</th> 
<td>123456789ABCD</td> 
<th>Field1</th> 
<td>6 = (Some-Specification (3 or more details))</td> 

</tr></tbody> 
<tbody><tr> 
<th>AGL</th> 
<td>1 - United States ; TH - Some Data</td> 
<th>Field2</th> 
<td>7 = (Option/Other Option)</td> 
</tr></tbody> 
<tbody><tr> 
<th>MANUFACTURER</th> 
<td>2010 SPECIFICATION (ADSD: HMKC)</td> 
<th>Field3</th> 

<td>8 = (My Type)</td> 
</tr></tbody> 
<tbody><tr> 
<th>MODEL</th> 
<td>6X4 MY-MODEL/SOME_SPECS LONG SPECIFICATION, BLAH</td> 
<th>Field4</th> 
<td>9 = (STUFF/OTHER STUFF)</td> 
</tr></tbody> 
<tbody> 

을 그리고 같은 더있다 ... 나는이의 데이터를 분석하고 싶습니다 셀을 변수로 변환합니다. (예 : ID 변수로 "123456789ABCD"구문 분석) ColdFusion에서 일하고 있는데 REFindNoCase, REReplaceNoCase, SpanExcluding과 같은 메소드를 사용하려고 생각했습니다. 어떻게 생각하나요? 또는 ColdFusion에 익숙하지 않은 경우이 데이터를 구문 분석하는 데 필요한 정규 표현식만으로도 매우 유용합니다.

+2

html/xml 콘텐츠를 구문 분석하기 위해 정규식을 사용하지 마십시오. xerces와 같은 dom/xml 파서를 사용하십시오 – stillstanding

+2

이 다소 인기있는 답변을 참조하십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

답변

1

본인은이 플랫폼에서 HTML을 정규식으로 구문 분석하는 것이 "골든 경로"가 아니라는 것에 동의합니다. 그러나 경우에 따라 이동하는 것이 가장 쉬운 방법 일 뿐이며 필요한 작업을 수행합니다.

이 정규식은 당신이 필요로하는 무엇을 수행해야합니다

<th>((?!</th>).)*</th>\s*<td>((?!</td>).)*</td> 

는 값의 키 및 그룹 2 캡처 그룹 1을 사용합니다.

ColdFusion에 대해 잘 모르기 때문에 적용 방법을 설명 할 수 없습니다.

7

HTML 용 Regex는 사용하지 마십시오. 그것은 당신을 파괴 할 것입니다.

이 작업을 많이 수행하는 경우 HTML을 표준화하는 TagSoup과 같은 HTML 도구를 사용해야합니다. 한 사이트의 웹 페이지로 작업하는 경우 원하는 셀을 추출하는 XSLT 스타일 시트 (또는 XPath를 사용하는 DOM 도구)를 만들 수 있습니다.

는 XPath는이 셀

//tbody/tr[1]/td[1] 

될 수있다 (필자는 HTML 네임 스페이스를 생략 한) 또는 ID를 기준으로 행을 발견하실 수 있습니다

//tbody/tr[th='ID']]/td 

는 [html로 오히려 지저분 해 보인다 - 그것은 thtd을 동일하게 사용합니다.

+0

우리는 실제로 이것을 많이하지 않습니다. 이것은 일시적인 조치의 일종으로 신속하게 들어가야합니다. – froadie

+0

@froadie - 나중에 정규 표현식을 오용하려는 고통의 세계와 더 큰 고통의 세계가 될 것입니다. –

+0

@froadie : 여전히 DOM 라이브러리를 사용하십시오. 당신은 DOM을 사용하는 것보다 정규 표현식을 만드는데 더 많은 시간을 할애해야합니다. – prodigitalson

1

CF xml parser, XmlParse을 사용하십시오. 엄격한 XML을 기반으로하는 것처럼 보이므로 htmltidy과 같은 것을 통해 입력을 실행해야합니다.

관련 문제