-1
문제 : 문자열의 모든 st를 가져와야합니다. 그렇게하면 메모에 마지막 결과 인 st2 만 추가됩니다. st와 st2 등을 어떻게 얻을 수 있습니까?Delphi : TRegExpr
const
pattern = '<h3 class=.*><a class=.*>([a-zA-Z0-9а-яА-Я]+)</a></h3>';
var
r: TRegExpr;
s: string;
begin
r:=TRegExpr.Create;
s:='<h3 class="yt-lockup-ellipsize"><a class="yt-uix-sessionlink yt-uix-tile-link result-item-translation-title"dir="ltr"title="Женщины"data-sessionlink="ei=CO_0s_S3oLECFQQZ3wodxl5sKw%3D%3D"href="/watch?v=E0MzksPjObU">st1</a></h3>';
s:=s + '<h3 class="yt-lockup-ellipsize"><a class="yt-uix-sessionlink yt-uix-tile-link result-item-translation-title"dir="ltr"title="Женщины"data-sessionlink="ei=CO_0s_S3oLECFQQZ3wodxl5sKw%3D%3D"href="/watch?v=E0MzksPjObU">st2</a></h3>';
r.Expression:=pattern;
if r.Exec(s) then
REPEAT
Memo2.Lines.Add(r.Match[1]);
UNTIL not r.ExecNext;
감사합니다. 왜 나쁜 생각이야? 그리고 좋은 생각 이니? :) – dedoki
일반적으로 HTML은 정규 언어가 아니므로 regexs는 HTML을 작성할 수있는 모든 방법을 포착 할 수 없습니다 (닫는 태그가 없으면 XML 파싱에도 실패합니다). 나는 최근의 경험을 통해 이야기한다 : 나의 정규식 기반 HTML 파서는 주석 처리 된 HTML을 건너 뛰지 않았다. 우둔한. C.f., 재미있는 시도를 위해 http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html. 또한 파서를 완전히 잠그는 정규식 기반 솔루션에 HTML을 공급할 수도 있습니다. 잘 정의 된 도메인을 가지고 있다면 실제로는 괜찮을 것입니다. 신뢰할 수없는 입력에주의하십시오. –
좋은 아이디어가 나오면 ... 가장 간단한 HTML 구문 분석 외에는 아무것도 할 필요가 없다면 Python for Delphi를 사용하여 BeautifulSoup을 호출 할 수 있습니다. 이것은 BeautifulSoup을 HTML 파서의 시금석에 불과합니다. –