Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak skonstruować wyrażenie regularne
iksigrek
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 19.08.2009

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


String:

.cos = cos innego;
.cos2 = cos innego2; a tu coś dodatkowego
.cos3 = cos innego3; i tu () /// o takie (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  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);
Go to the top of the page
+Quote Post
iksigrek
post
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 19.08.2009

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


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 ?

Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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

Ten post edytował wookieb 20.08.2009, 07:03:35
Go to the top of the page
+Quote Post
iksigrek
post
Post #5





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 19.08.2009

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


thx (IMG:style_emoticons/default/winksmiley.jpg)
Pomógł.
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: 3.10.2025 - 10:17