Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak skonstruować wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
iksigrek
String:

.cos = cos innego;
.cos2 = cos innego2; a tu coś dodatkowego
.cos3 = cos innego3; i tu () /// o takie questionmark.gif! pierdoły
itd..

Jak zbudować wzorzec, by usunąć wszystko po ";" (a przed '.') ? (Czyli "a tu coś dodatkowego", "i tu () ///..." etc..
Próbowałem np. $wzorzec = "(;[.]+\.)" i kilka innych kombinacji z wyszczególnieniem znaków (\d\s\n\ta-zA-Z0-9) itp. ale nie działa
wookieb
  1.  
  2. $text = '.cos = cos innego;
  3. .cos2 = cos innego2; a tu coś dodatkowego
  4. .cos3 = cos innego3; i tu () /// o takie questionmark.gif! pierdoły';
  5.  
  6.  
  7. echo preg_replace('/;(.*?)(\\n|$)/s', "\n", $text);


Przed kropką
  1. $text = '.cos = cos innego;
  2. LOL.cos2 = cos innego2; a tu coś dodatkowego
  3. MLASK.cos3 = cos innego3; i tu () /// o takie questionmark.gif! pierdoły';
  4.  
  5. echo preg_replace('/(\\n|^).*?\./s', '', $text);
iksigrek
Poszło, dzięki.

Jeśli możesz, wytłumacz tylko fragmenty:

(.*?) - czyli dowolny znak 0 lub więcej razy, ale po co jeszcze "?" - czyli dowolny 0 lub więcej i ma wystąpić 0 lub jeden raz ?
(\\n|$) - dlaczego znak nowej linii jest poprzedzony backslashem ? Skoro backslash zmienia to co za nim stoi w normalny znak, to nie powinien szukać w ten sposób backslasha i "n" ? Tzn. wiem, że nie powinien, bo działa, ale dlaczego ? no i to |$ ? Chodzi o to, że znak nowej linii albo koniec ciągu ?

/s - wiem, że \s znaczy spacja, a /s po ?

wookieb
Cytat
(.*?) - czyli dowolny znak 0 lub więcej razy, ale po co jeszcze \"?\" - czyli dowolny 0 lub więcej i ma wystąpić 0 lub jeden raz ?

Poczytaj o zachłanności wyrażeń
Cytat
(\\\\n|$) - dlaczego znak nowej linii jest poprzedzony backslashem ? Skoro backslash zmienia to co za nim stoi w normalny znak, to nie powinien szukać w ten sposób backslasha i \"n\" ? Tzn. wiem, że nie powinien, bo działa, ale dlaczego ? no i to |$ ? Chodzi o to, że znak nowej linii albo koniec ciągu ?
A tak jakoś poprzedziłem i działało. A \\n|$ oznacza ze ma szukac do najblizszego znaku nowej linii lub konca ciagu

Cytat
/s - wiem, że \\s znaczy spacja, a /s po ?

Manuala się nie czyta... http://pl.php.net/manual/pl/reference.pcre...n.modifiers.php
iksigrek
thx winksmiley.jpg
Pomógł.
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.