07. september 2018 - 12:18Der er
4 kommentarer og 1 løsning
preg_split og regulære udtryk
Hej
Jeg har en udfordring med et regulært udtryk, hvilket jeg sgu ikke er ret skarp i. Nå, men udfordringen er at jeg vil have splittet en lang streng efter hvert A, V, I, L, G og R medmindre den IKKE efterfølges af B, C, D, E, H, I, J, K, M, N, O, Q, R, S, T, U, V, W, X, Y eller X og tilslut returneres hele lortet i et array
Hvis nogle har lyst til at forsøge sig, så er et eksempal på en streng her: MRSWVVGARLLLLLQLVLVLGAVRLPPCTDPRHCTDPPRYTPDWPSLDSRPLPAWFDEAKFGVFVHWGVFSVPAWGSEWFWWHWQGEKLPQYESFMKENYPPDFSYADFGPRFTARFFNPDSWADLFKAAGAKYVVLTTKHHEGYTNWPSPVSWNWNSKDVGPHRDLVGELGTAIRKRNIRYGLYHSLLEWFHPLYLRDKKNGFKTQYFVNAKTMPELYDLVNRYKPDLIWSDGEWECPDTYWNSTDFLAWLYNDSPVKDEVVVNDRWGQNCSCHHGGYYNCKDKFQPETLPDHKWEMCTSIDQRSWGYRRDMEMADITNESTIISELVQTVSLGGNYLLNVGPTKDGLIVPIFQERLLAVGKWLSINGEAIYASKPWRVQSEKNSVWYTSKGLAVYAILLHWPEYGILSLISPIATSTTKVTMLGIQKDLKWSLNPSGKGLLVFLPQLPPAALPTEFAWTIKLTGVK
Vi splitter efter hvert A, V, I, L, G og R medmindre de efterfølges af et B, C, D, E, H, I, J, K, M, N, O, Q, R, S, T, U, V, W, X, Y eller X Streng: PSLDSRPLPAWFDEAKFGV
PSLDSRP L P A W FDEAKFGV
Den splitter efter A, men da A efterfølges af W bør den ikke splitte.
Uhh, det er tæt på, dvs. den gør alt rigtigt, men jeg får ikke slutningen med: MRSWVVGARLLLLLQLVLVLGAVRLPPCTDPRHCTDPPRYTPDWPSLDSRPLPAWFDEAKFGVFVHWGVFSVPAWGSEWFWWHWQGEKLPQYESFMKENY PPDFSYADFGPRFTARFFNPDSWADLFKAAGAKYVVLTTKHHEGYTNWPSPVSWNWNSKDVGPHRDLVGELGTAIRKRNIRYGLYHSLLEWFHPLYLRDK KNGFKTQYFVNAKTMPELYDLVNRYKPDLIWSDGEWECPDTYWNSTDFLAWLYNDSPVKDEVVVNDRWGQNCSCHHGGYYNCKDKFQPETLPDHKWEMCT SIDQRSWGYRRDMEMADITNESTIISELVQTVSLGGNYLLNVGPTKDGLIVPIFQERLLAVGKWLSINGEAIYASKPWRVQSEKNSVWYTSKGLAVYAIL LHWPEYGILSLISPIATSTTKVTMLGIQKDLKWSLNPSGKGLLVFLPQLPPAALPTEFAWTIKLTGVK
Ah ja, jeg testede med en streng der sluttede på "A", hvor den virkede.
Lidt bedre er dette: /(.*?(?>[AVILGR]|$))(?=[^BCDEHIJKMNOQRSTUVWXYX]|$)/
- den får dog en tom match tilbage til sidst, fordi den accepterer en 0 tegn lang streng som et match, så længe den afslutter linjen. Ikke perfekt, men du kan nemt fjerne det sidste tomme match, eventuelt med array_pop().
Jeg har desværre ikke lige tid til at tænke mere over det lige nu.
Fårk du er sej :-) Tusind tak, lige den løsning jeg skal bruge, pyt med det ekstra i array, det er lige meget. Man kunne engang give point her, 1000 til dig ! Ha en go weekend...
Regulære udtryk, men burde nok lære det...
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.