Witam,
Chciałbym wyciągnąć wszystko co znajduje się między tagami <:tbody> i </:tbody>. Jednak wzorzec: <:tbody>(.*)</:tbody> nie działa jakbym sobie tego życzył. Wykracza poza granice </tbody> i bierze wszystkie znaki poza nią. Domyślam się gdzie może leżeć problem, ale nie mam pomysłu jak to rozwiązać. Za wszelką pomoc z góry dziękuję.
Od czasu do czasu się to pojawia. Otóż nie można parsować/czytać htmla Regexami, jak potrzebujemy coś co znajduje sie między jakimiś nawiasami/znacznikami to Regexy wymiękają. Zainteresuj się biblioteką beautifulsoup.
Właśnie. Rozwiń swoją myśl, proszę. Nie chce stworzyć uniwersalnego parsera na regex'ach tylko parsować dobrze znany mi zbiór, określony ścisłymi zasadami.
wowo093 napisał(a):
Właśnie. Rozwiń swoją myśl, proszę. Nie chce stworzyć uniwersalnego parsera na regex'ach tylko parsować dobrze znany mi zbiór, określony ścisłymi zasadami.
W komentarzu odpowiedziałem, po prostu nie ma regexa do rozpoznawania, że nawias się zamknął. Regexy mogą rozpoznać tylko:
- czy jest to dany string, np., 'a';
- czy jest to dany znak lub pusty string;
- czy jest znak lub znak;
- czy jest to konkatenacja znaków;
- czy jest dowolna ilośc powtórzeń danego znaku lub pusty znak (tzw. Kleene Star).
Mając tylko to do dyspozycji nie damy rady zapamietać dany znak i robić coś dopóki go znowu nie zobaczymy - to byłby już język context free.
lion137 napisał(a):
wowo093 napisał(a):
Właśnie. Rozwiń swoją myśl, proszę. Nie chce stworzyć uniwersalnego parsera na regex'ach tylko parsować dobrze znany mi zbiór, określony ścisłymi zasadami.
W komentarzu odpowiedziałem, po prostu nie ma regexa do rozpoznawania, że nawias się zamknął. Regexy mogą rozpoznać tylko:
- czy jest to dany string, np., 'a';
- czy jest to dany znak lub pusty string;
- czy jest znak lub znak;
- czy jest to konkatenacja znaków;
- czy jest dowolna ilośc powtórzeń danego znaku lub pusty znak (tzw. Kleene Star).
Mając tylko to do dyspozycji nie damy rady zapamietać dany znak i robić coś dopóki go znowu nie zobaczymy - to byłby już język context free.
Dziękuję za odpowiedzi. W takim razie czy jest coś co mógłbyś mi polecić do parsowania html'a?
RegExp wysypie się przede wszystkim na tego typu przykładach:
<tbody>
<!--</tbody>-->
oraz na zagnieżdżonych znacznikach, np:
<div>
<div>
</div>
</div>
"Dziękuję za odpowiedzi. W takim razie czy jest coś co mógłbyś mi polecić do parsowania html'a?"
Już pisałem, Zobacz beautifulsoup.