Avatar billede Slettet bruger
30. juli 2008 - 15:31 Der er 8 kommentarer og
1 løsning

Regular expression replace driller

Hej,

Jeg har problemer med at få nogle simple regex' til at køre.

Hvorfor er disse regular expressions ikke ens?
eregi_replace("(a)\\1","\\1","aa"); //returnerer "aa"
eregi_replace("(a)a","\\1","aa"); //returnerer "a"

Hvorfor giver lazy quantifier fejl?
eregi_replace("(.+?)","\\1","aa"); // Warning: eregi_replace() [function.eregi-replace]: REG_BADRPT in C:\Documents and Settings\bogsted\Desktop\System\Server\WRI Web\adminscripts\regex.php on line 4

/1
Avatar billede jakobdo Ekspert
30. juli 2008 - 16:33 #1
Din \\1 kommer vel til at betyde du søger efter:

a som fanges efterfulgt af \1 og det replacer du så med a
Hvilket ikke giver mening.
Din nummer 2 (a)a vil søge efter dobbelt aa og erstatte det med a
Avatar billede Slettet bruger
30. juli 2008 - 17:49 #2
Det er også kun nedkogte eksempler, der viser, hvor det går galt.

(a)\\1 er vel det samme som at søge efter (a)a, da \\1 er en backreference til (a). Men som eksemplerne herover viser, er det ikke tilfældet.

/1.
Avatar billede jakobdo Ekspert
30. juli 2008 - 17:58 #3
echo preg_replace('/(a)\1/', '\1', 'aa'); //Giver a
Avatar billede jakobdo Ekspert
30. juli 2008 - 17:59 #4
echo preg_replace('/(a)a/', '\1', 'aa'); //Giver også a
Avatar billede Slettet bruger
30. juli 2008 - 18:03 #5
Super.. Jeg kikker på det i morgen.. Måske virker lazy quantifier også med preg_replace.
Avatar billede jakobdo Ekspert
30. juli 2008 - 19:09 #6
Det bør den bestemt gøre ja.
Og preg skulle være hurtigere end ereg.
Men om den direkte er bedre ved jeg ikke.
Avatar billede Slettet bruger
31. juli 2008 - 08:13 #7
Så virker det.. Men hvad er meningen i at omslutte med slash?

preg_replace("/(a)\\1/i","\\1","aa");
preg_replace("/(a)a/i","\\1","aa");
preg_replace("/(.+?)/i","\\1","aa");

Tak for hjælpen - smid et svar.

/1
Avatar billede jakobdo Ekspert
31. juli 2008 - 09:58 #8
Det er et start og slut tag.
Man kan bruge andre også.
Nogle gange ser jeg %

Og et svar
Avatar billede jakobdo Ekspert
31. juli 2008 - 14:28 #9
Takker for point.
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