06. juni 2007 - 16:10Der er
1 kommentar og 1 løsning
Match all inden i match all
Hej
Jeg skal i PHP prøve at fange en struktur der ligger flere steder. Jeg er derfør nødt til først at fange det rigtige område førend jeg fanger strukturen.
Når du gentager en subpattern vil kun den sidste der passer blive fanget:
When a capturing subpattern is repeated, the value captured is the substring that matched the final iteration. For example, after (tweedle[dume]{3}\s*)+ has matched "tweedledum tweedledee" the value of the captured substring is "tweedledee". However, if there are nested capturing subpatterns, the corresponding captured values may have been set in previous iterations. For example, after /(a|(b))+/ matches "aba" the value of the second captured substring is "b".
Derfor kan du ikke gøre det på den måde, hvis du ikke ved hvor mange <b></b> der er i <c>. Så er du nødt til at gøre det af 2 omgange.
Hvis du ved hvor mange der er skal lave en subpattern for hver af dem.
PS: .*? er det samme som .*, da * betyder {0,} og ? betyder {0,1}. Husk at bruge modifier i og U, ligesom du har brugt s. Så er du ikke afhængig af om der skrives <C> eller <c>. U gør at * og ? ikke går fra første <c> til sidste </c> selvomd der er andre <c> og </c> i mellem!
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.