• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrócenie wyrażenia regularnego

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
206 wizyt
pytanie zadane 7 stycznia 2019 w Python przez Frezen Obywatel (1,330 p.)

Witam,

piszę program na zaliczenie w Pythonie. Pobiera on dane ze strony i za pomocą jednego wyrażenia regularnego potrzebuję wyciągnąć kilka linijek kodu. Moje aktualne wyrażenie, które działa to: 

    pattern = re.compile('<td class="colWalor.*">\n.*'+name+'.*</a>.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*.*\n*</tr>')

Chciałbym jednak je jakoś skrócić, bo niezbyt ładnie to wygląda. Czy da się w jakiś sposób zgrupować te ".*\n*" i po prostu wpisać ile jest wystąpień? Próbowałem kilku sposobów z internetu, ale żadne nie działa w pożądany sposób.

komentarz 7 stycznia 2019 przez X3h Dyskutant (9,540 p.)
Rozpisz to.

1 odpowiedź

0 głosów
odpowiedź 7 stycznia 2019 przez Tomek Sochacki Ekspert (227,490 p.)

Możesz użyć kwantyfikatora:

(.*\n){5}

ewentualnie jeśli nie chcesz przechwytu to można zrobić (?: ... ) ale to w sumie nieistotne tutaj aż tak bardzo. Albo generalnie użyj jakieś flagi, która traktuje znaki kropki jako dowolny znak łącznie z nowym wierszem... nie znam pajtona więc tutaj dokładnie się nie wypowiem. Albo podaj dokładnie jaki masz ciąg wejściowy i co chcesz z niego wydłubać regexp bo coś mi się ten regexp nie podoba...

komentarz 7 stycznia 2019 przez Frezen Obywatel (1,330 p.)

Właśnie takich sposobów już próbowałem. Jak użyję kwantyfikatora to zwraca mi pustą listę, a jeśli użyję flagi re.DOTALL to wyciąga mi wszystko aż do wystąpienia ostatniego </tr>.

Może to bardziej rozpiszę. Chciałbym ze strony: https://www.bankier.pl/gielda/notowania/akcje wyciągnąć jeden wiersz danych w zależności od nazwy czyli np. taki fragment. Potem już sobie to przetwarzam w łatwy sposób tylko ten regex wygląda niezbyt elegancko.

Podobne pytania

0 głosów
1 odpowiedź 235 wizyt
0 głosów
1 odpowiedź 1,061 wizyt
0 głosów
2 odpowiedzi 190 wizyt
pytanie zadane 8 czerwca 2017 w C i C++ przez Grzegorz Giera Początkujący (320 p.)

93,166 zapytań

142,177 odpowiedzi

321,946 komentarzy

62,495 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 664p. - Marcin Putra
  5. 662p. - Łukasz Eckert
  6. 649p. - Michal Drewniak
  7. 641p. - rucin93
  8. 641p. - rafalszastok
  9. 629p. - Adrian Wieprzkowicz
  10. 629p. - Piotr Aleksandrowicz
  11. 621p. - Dawid128
  12. 612p. - Mikbac
  13. 611p. - ksalekk
  14. 606p. - Mariusz Fornal
  15. 602p. - Michał Telesz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...