2012-06-19 4 views
0

내가이 적어도 천 번을 요청하고있다하지만 난 여기에이 캐릭터의 이름과 일치하는 적절한 정규식을 찾을 수 없습니다 알고 HTML 태그 내부에서 텍스트를 추출하는 'Donald'라는 이름을 얻고 가장 가까운 정규식은 [a-zA-Z0-9] +이지만 결과는> Donald입니다.정규식은

저는 PureBasic으로 코딩하고 있습니다 (구문은 Basic과 비슷합니다). 정규식에는 PCRE 라이브러리가 사용됩니다.

아무도 도와 줄 수 있습니까?

답변

3

전체 일치가 아닌 번호가 매겨진 그룹 만 사용하는 경우 조쉬의 패턴이 작동합니다. 전체 일치를 사용해야하는 경우 (?<=>)(\w+?)(?=<)

어느 쪽이든 정규 표현식은 HTML 구문 분석에 적합하지 않음이 널리 알려져 있습니다.

설명 : 현재 항목 앞에 무언가가 있는지 확인하려면 (?<=)이 사용됩니다. \w+?은 "단어"문자와 1 회 이상 일치하지만 패턴의 나머지가 무언가와 일치 할 때마다 중지합니다.이 경우 ?은 빠져있을 수 있습니다. (?=)은 현재 항목 뒤에 항목이 있는지 확인하는 데 사용됩니다.

+0

와우 그 정규식이 실제로 작동했습니다. 왜 그런지 설명해 주시겠습니까? – Nubcake

+0

멋진 정규식, Thorbear! –

+0

@ user1420635 패턴에 대한 설명 추가 – Thorbear

1

그것은 문자/숫자 또한

>([\w]+)<

나는이 프로젝트에 제한이 무엇인지 정확히 모르겠어요 아무것도를 캡처해야 시도하지만 할 일이 많이 쉬워 질 것입니다 jQuery를 대신 정규식을 사용하여이

$('#topbarUserName').text();

같은.

+0

> 도널드 < – Nubcake

+0

는 꺾쇠 괄호로 확인이 정규식 캡처, 괄호의 외부합니다. –

+0

여전히 동일한 것 : | – Nubcake

1

>([a-zA-Z]+) 트릭을해야합니다. 그룹화 권리를 얻는 것을 잊지 마십시오.

0

일반적인 오래된 기본 문자열 기능을 사용하지 않는 이유는 무엇입니까? 지금 나에게 을 제공

a.w = FindString(HTMLstring.s, "topbarUserName") + 16 ; 2 for "> and topbar... 
If a > 0 
b.w = FindString(HTMLstring, "<", a) 
If b > 0 
c.w = b - a 
Donald.s = Mid(HTMLstring,a, c) 
EndIf 
EndIf 
Debug Donald