Avatar billede minau Nybegynder
01. november 2004 - 12:22 Der er 7 kommentarer og
1 løsning

regular expression problem

Suk

Forstår ikke helt det med regular expression. kiggede forbi http://dk2.php.net/manual/en/reference.pcre.pattern.syntax.php men tror bare at det at se hvor mange muligheder der er forvirre lige nu.


for at hjælpe på min forståelse ville jeg være meget glad hvis nogen kunne hjælpe mig med en tanke opgave.


i følgende seudo kode vil jeg gerne baberer alt andet end
gem .x 1
gem .x 20
gem .x 300
(.x henviser til at der er flere af dem) bare i et array - eller måske en streng. lige meget.

i seudokoden som følger

<starta>
tom tom noget fis

<tas>
gem .a 1
<noget1>
gem .bb 20
<noget2>
gem .ccc 300
<tus>

<tas>
gem .d 1
<noget1>
gem .ee 20
<noget2>
gem .fff 300
<tus>


<tas>
gem .g 1
<noget1>
gem .hh 20
<noget2>
gem .iii 300
<tus>


tom tom mere fis
<sluta>


regner med at opgaven skal gribes an med preg_split
Avatar billede erikjacobsen Ekspert
01. november 2004 - 12:27 #1
Avatar billede minau Nybegynder
01. november 2004 - 12:45 #2
bom bom - kigger lige på det :-)
Avatar billede minau Nybegynder
01. november 2004 - 12:53 #3
for
$a = koden
altså
preg_match_all('/gem \.\S+ \d+/m',$a,$r);
(båre så andre kan se med)

listen (nederst) hjalp sammen med dette her.

hvorfor er der "/m"? og skal sætningen altid starte med "/"?



\d
any decimal digit

\D
any character that is not a decimal digit

\s
any whitespace character

\S
any character that is not a whitespace character

\w
any "word" character

\W
any "non-word" character
Avatar billede erikjacobsen Ekspert
01. november 2004 - 12:58 #4
m-et er sikkert ikke nødvendigt, men hvis du kommer til at bruge ^og $
så er den det nok ;) http://dk2.php.net/manual/en/reference.pcre.pattern.modifiers.php

preg-metoderne skal have det regulære udtryk indeni et eller andet, ofte: /..../
men bare med det samme som det slutter kan du vælge andre tegn.
Avatar billede minau Nybegynder
01. november 2004 - 13:08 #5
Tak - skriv en besked som svar så du kan få point :-)
Jeg har lige et bonus spørgsmål. Hvis det nu var .x jeg kun ville have fat i, altså jeg ved hvad der omgiver det jeg ønsker. SÅ kan jeg vel ikke bruge preg_match_all?
Avatar billede erikjacobsen Ekspert
01. november 2004 - 14:46 #6
Jo, så skriver du
preg_match_all('/gem (\.\S+) \d+/m',$a,$r);
og bruger $r[1]

Tak, men jeg samler slet ikke på point. Svar selv, accepter eget svar.
Avatar billede tentakkel Nybegynder
01. november 2004 - 15:06 #7
ohh - takker .-)

og så hvis man fx vil have et argument mere - så kan man skrive preg_match_all('/gem (\.\S+) (\d+)/m',$a,$r);
print_r($r[2]);

jeg er ved at lære det

tak erikjacobsen :-)
Avatar billede minau Nybegynder
01. november 2004 - 15:08 #8
arrrggg - sorry. Min bror var lige logget ind. (besked fra tentakkel var fra Minau)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester