[PHP] Wyrażenie regularne (powtórzenia)

0

odczytuje z innej strony cos i napisalem wzorzec który dziala ale czy nie da sie go uproscic tzn
<tr height=\"40\"><td>([0-9]+)</td><td>([0-9]+[-]+[0-9]+[-]+[0-9]+)</td><td><strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong>, <strong>([0-9]+)</strong></td></tr>
chodzi o to ze <strong>([0-9]+)</strong>, sie powtarza 19 razy a pozniej jest zakonczenie <strong>([0-9]+)</strong></td></tr> da sie jakos napisac tak ten wzor zeby przy porownywaniu wiedzial ze jest jakis tekst pozniej ze jakis tekst sie powtarza 19 razy i na koncu znow jest jakis tekst? dla przykladu podam jak ja probowalem
<tr height=\"40\"><td>([0-9]+)</td><td>([0-9]+[-]+[0-9]+[-]+[0-9]+)</td><td>[<strong>([0-9]+)</strong>, ]{19}<strong>([0-9]+)</strong></td></tr>

0

No ale zdecyduj się. ([0-9]+) x19 złapie 19 grup z liczbami (nota bene, zamiast [0-9] możesz używać \d w składni perlowskiej [preg_...]) - a (?:([0-9]+)){19} złapie tylko jedną grupę - ostatnią.

Zdeklaruj, czy potrzebujesz tych grup czy nie - bo jak nie, to po co obciążasz regexa grupami () zamiast użyć (?:)

0

tak x19 lapie 19 grupa ale pozniej do tablicy z wynikiem zapisuje tylko ostatnia i tu jest problem bo chcialem tak napisac wyrazenie zeby lapalo te 19 grup i zapisywalo wszystkie razem oczywiscie bez zadnych znacznikow, nie wiem wlasnie dlaczego jak sie juz powtarza cos {x} razy to ze znacznikami lapie wszystko a wartosci z () zapisuje juz źle tzn. tylko 1 tą ostatnia do tej tablicy z wynikami

0

Nie zapisuje źle - Twoja interpretacja jest zła.

Zlicz fizycznie liczbę nawiasów () - tyle będzie grup. Kwantyfikator {} nie zwiększa liczby grup - chcesz łapać 19 grup, musisz rozwinąć wyrażenie jak w pierwszym przykładzie.

0

czyli musze pisac x19 (czyli taki dłuższy wzór po prostu) i nie ma na to rady jak chce złapać 19 grup? tak podejrzewałem ale chciałem się upewnic miałem tylko nadzieje że wyrażenia reg. mają troche większą "moc" ale takiego przypadku nikt nie przewidział żeby zapisać jakoś skrótowo zeby tworzyl 19 grup przy kwantyfikatorach no bo dane przecież pobiera bez problemu do pierwszego miejsca w tablicy z wynikami gdzie sa zapisane razem z tagami htmla także to mnie dziwi że coś działa ale nie do końca

1 użytkowników online, w tym zalogowanych: 0, gości: 1