Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrazenia regularne - regex
Forum PHP.pl > Forum > PHP
uczeń php
Witam
Mam tekst w którym są daty 1 - 7 stycznia 2014 albo 26 maja 2015. Chciałbym pobrać wszystkie daty z tekstu. Dlatego też napisałem taki o to skrypt
  1. $data = '/([\d]{1,2}[\s\-]+[\d]{1,2}[\s]+[[:alpha:]]+[\s]+[\d]{4})|([\d]{1,2}[\s]+[[:alpha:]]+[\s]+[\d]{4})/'; preg_match_all($data, $tekst, $tablica_dat); var_dump($tablica_dat);
. Moje pytanie brzmi czy można zrobić , żeby funkcja funkcja preg_match_all kończyła swoje działanie na array[0] ? Z tego co przeanalizowałem funkcja preg_match_all tworzy array[3] w array[0] wpisuje daty typu od - do (1 - 7 stycznia 2014) i 26 maja 2015 w array[1] daty TYLKO typu 1 - 7 stycznia 2014 i array[2] daty TYLKO typu 26 maja 2015. Kombinowałem i szukałem w googlach czy można wyrażeniu regularnym zamiast operatora (or - |) użyć operatora (and - &) ale nic takiego nie znalazłem a moje kombinowanie meotda prób i błędów tez nic nie daje.
Pozdrawiam
Pyton_000
A w czym Ci to przeszkadza? w 0 masz wszystkie znalezione, w 1 tylko 1-szy pattern, w 2 tylko 2-gi pattern

PS. Obecny regex możesz delikatnie skrócić:

Kod
(\d{1,2}[\s-]+\d{1,2}\s+[[:alpha:]]+\s+\d{4})|(\d{1,2}\s+[[:alpha:]]+\s+\d{4})
uczeń php
Może to dziwne, ale oprócz prawidłowego działania to chciałbym aby aplikacja która tworze używała jak najmniej pamięci, jak najmniej danych, jak najmniej mocy obliczeniowych i żeby skrypty odpalały się szybko itd.
Pyton_000
Złota zasada, dopóki nie ma wyraźnego powodu do optymalizacji nie rób tego. Zmarnujesz tylko czas, siły, nerwy a wymierne korzyści będą niewspółmierne.
SHiP
Ojjj Pyton_000 biggrin.gif biggrin.gif biggrin.gif

Oczywiście, że się da. Służy do tego ?:. Ogólnie każdy blok w nawiasach okrągłych ( ) to zwrócenie wartości, ale można to anulować za pomocą tych znaków

np.

  1. ([a-z]{4})


Pojawi się w wynikach

  1. (?:[a-z]{4})


Nie pojawi się w wynikach

EDIT: Jakby ktoś potrzebował terminologii :-). Pierwsze nazywa się grupa (group), a drugie grupa pasywna (passive group)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.