2016-12-03 2 views
0

3 개의 정규 표현식 패턴을 하나의 표현식에 결합하는 방법은 무엇입니까?
나는 제 번째 태그 값TD 태그 값이위한 적절한 정규식을 사용 태그의 ID을 얻고 싶은. 나는 1 시간 동안 모든 것을 다 표현하기 위해 고심하고있다. 해결책은 무엇인가?lookahead와 함께 여러 정규 표현식 그룹 결합

regex for th tag: 
th[^>]+l">([^<]+)</th 
regex for td tag: 
td>([^<]+)</td 
regex for a tag: 
<a((?!</a).)id="([^"]+)" 

이 스 니펫과 같은 항목 목록이 있습니다. 당신은 . 일치 뉴 라인을 만들기 위해 (?s) 수정이 필요

(?s)th[^>]+l">(.*?)<\/th>.*?<td>(.*?)<\/td>.*?<a id="(.*?)" 

:

... 
    <th scope="col">1X2</th> 
    <th scope="col" class="goR">Odds</th> 
    </tr></thead> 
    <tbody> 
    <tr class="row1"> 
    <td>Fortuna Köln</td> 
    <td class="prc "><label><a id="MarketGroupListComponent25-selection-38225206.1" /> 
    ... 
+3

간단한 추출 가능성을 제공하는 적절한 HTML 파싱 라이브러리는 무엇입니까? https://jsoup.org/cookbook/extract-data/selector-syntax - 누군가가 html 테이블에 주석을 추가하면 정규 표현식이 엉망입니다. 예를 들어 – zapl

+0

제안 해 주셔서 감사합니다. 확실히 확인해 보겠습니다. – SzabK

+0

@zapl html이 제대로 작성되지 않은 경우 파서가 망가졌습니다 (예 : 닫히지 않은 p 태그 사용). 파서가 여기있는 최상의 솔루션 일 수도 있지만 항상 최상의 솔루션은 아닙니다. –

답변

0

여기에 가능한 솔루션입니다. 원하는 3 개의 문자열은 그룹 1, 2 및 3입니다.

이 경우 미리보기가 필요하지 않습니다.

이 정규식 많은 이상한 경우에 실패합니다

, 예를 들면 :

action

참고를 참조하십시오 id 또는 값이 th 또는 th\"을 이스케이프 처리했습니다. html이 유효하다는 것을 알고 있으면 더 복잡한 쿼리에 Java HTML parser을 사용할 수 있습니다. 이 구문 분석기는 html이 유효하지 않거나 html 구조가 변경된 경우에도 실패 할 수 있습니다.

+0

감사합니다. – SzabK

+1

downvote에 대한 의견이 있으십니까? 질문은 Regex에게 물었고, 저는 Regex를주었습니다. 파일 형식의 가변성에 따라 정규 표현식을 사용하는 것이 좋습니다. 파서가 더 좋은 아이디어 일 수 있습니다. –