![]() |
![]() |
![]()
Post
#1
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
hej,
mam lekki problem z regexp'ami, do rzeczy. mam takie stringi (możliwości): Kod jeden+"+test"+dwa jeden+"test+"+dwa jeden+"te+st"+dwa i teraz chce "porozbijać" te ciągi względem znaku +, wynik: Kod jeden; "+test"; dwa jeden; "test+"; dwa jeden; "te+st"; dwa oczywiście te rozbicia maja być tablicą otrzymana przez preg_split. stworzyłem takie wyrażenie: Kod #((?<!")\+)|(\+(?!(.*)"))#si niestety dopasowuje mi tylko do pierwszego ciągu: Kod jeden; "+test"; dwa pozostałe dwa nie parsują się poprawnie, jakiejś sugestie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Szybciej będzie chyba napisać banalny wręcz parser, który po prostu przeleci znak po znaku i rozdzieli względem znaku "+". Do tego proste sprawdzanie Czy znajdujemy się pomiędzy cudzysłowem?, ignorujące znak "+".
O dziwo w PHP najprawdopodobniej będzie to najwolniejsze rozwiązanie. (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#3
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
Szybciej będzie chyba napisać banalny wręcz parser, który po prostu przeleci znak po znaku i rozdzieli względem znaku "+". Do tego proste sprawdzanie Czy znajdujemy się pomiędzy cudzysłowem?, ignorujące znak "+". O dziwo w PHP najprawdopodobniej będzie to najwolniejsze rozwiązanie. (IMG:style_emoticons/default/wink.gif) właśnie tak miałem teraz, o ile przy string'u, który ma kilkanaście znaków to jest spoko, ale jak już wzrasta złożoność obliczeniowa wraz z wzrostem złożoności string'u robi się nie wydajnie, dlatego chciałem to zrzucić na PCRE (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 22:49 |