Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyrazenia regularne - regex, laczenie typu '&-and'
uczeń php
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 8.01.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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})


Ten post edytował Pyton_000 6.06.2016, 09:18:21
Go to the top of the page
+Quote Post
uczeń php
post
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 8.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
SHiP
post
Post #5





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Ojjj Pyton_000 (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/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)

Ten post edytował SHiP 6.06.2016, 19:40:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 02:23