Regular expressions Top PHP tutorial

Door Arend a, 14 jaar geleden, 40.819x bekeken

De complete uitleg over regular expressions (PCRE Compatible)

Gesponsorde koppelingen

Inhoudsopgave

  1. Voorwoord
  2. My First Regex
  3. Het gebruik van character classes
  4. Het een of het ander matchen
  5. Groeperen en hierarchisch matchen
  6. Het extraheren van matches
  7. Repeterende matches
  8. Disclaimer, bronvermelding, handige links, TODO

 

Er zijn 20 reacties op 'Regular expressions'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marnix
Marnix
14 jaar geleden
 
0 +1 -0 -1
Geweldige tutorial, het is me een stuk helderder, bedankt!
Hendel Berg
Hendel Berg
14 jaar geleden
 
0 +1 -0 -1
Fan-tas-tisch! Ik begreep nooit wat van die regelar expressions. Nu kan ik er zelfs zelf mee aan de slag. Bedankt!
Klaasjan Boven
Klaasjan Boven
14 jaar geleden
 
0 +1 -0 -1
arend in een woord "geweldig"
Bijna net zo goed als de slimme vragen stellen tut
Joren de Wit
Joren de Wit
14 jaar geleden
 
0 +1 -0 -1
Nice tut! Hier zullen veel mensen wat aan hebben...

ps. Nog wel wat typfoutjes hier een daar, maar je gaf al aan dat je daar nog niet aan toegekomen was ;)
Arend a
Arend a
14 jaar geleden
 
0 +1 -0 -1
als je ze tegenkomt, zou je ze even kunnen quoten? Ik denk niet dat ik nog tijd heb/neem om alles precies na te lopen, of te checken, daar heb ik simpelweg geen tijd voor. Maar als je specifieke dingen kan quoten wil ik ze wel veranderen.
Joren de Wit
Joren de Wit
14 jaar geleden
 
0 +1 -0 -1
Pagina 2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
preg_match("/[$x]at/", $string);  // matched 'bat', 'cat' en 'rat'
preg_match("/[\$x]at/", $string); // matched '$at' of 'xat'
preg_match("/[\\$x]at/", $string);// matched '\at\', 'bat', 'cat' of 'rat'
?>

Voor de duidelijkheid zou ik de $x hier buiten quotes halen als je de variabele $x bedoelt.

Pagina 3:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
preg_match("/c|ca|cat|cats"/,"cats"); // matched 'c'
preg_match("/cats|cat|ca|c//,"cats"); // matched 'cats'
?>

Hier staat 2x een / verkeerd.

Pagina 4:
Je bent ergens vergeten een tag af te sluiten.

Pagina 5:
Quote:
Voor complexe voorbeelden zal hij als volgt matchen:
/(ab(cd|ef)((gi)|j))/
1 2 34

Misschien even een tag te gebruiken om de cijfer duidelijk onder de regex te zetten?

Dit waren de eerste dingetjes die me zo snel opvielen. Misschien volgt er later nog meer.
Citroen Anoniem Graag
Citroen Anoniem Graag
14 jaar geleden
 
0 +1 -0 -1
Geweldige tutorial, het is een vrij lange tutorial dus ik wacht ook nog even op de samenvatting, maar het is zeer duidelijk. Een Toppertje
Kinger7
Kinger7
14 jaar geleden
 
0 +1 -0 -1
Geweldig. Hartstikke bedankt. Je hebt me heel erg op weg geholpen.
Iltar van der berg
iltar van der berg
14 jaar geleden
 
0 +1 -0 -1
ziet er mooi uit :)
Pieter Klein
Pieter Klein
12 jaar geleden
 
0 +1 -0 -1
Een z??r waardevolle uitleg voor een beginner, zoals ik. Ik heb nog niet alles gelezen, maar toch veroorloof ik mij een kleine opmerking te plaatsen.

op tutorials/4/520/1289/ staat onderaan de pagina:
Meestal is het het standaard gedrag wat je wil, maar //s en //m zijn soms erg handig. Wanner //m wordt gebruik kan je nog steeds het begin en eind van de de string matchen met de anchors: \A en \Z (deze matchen ook de enters aan ervoor of erna)

Een klein tekst foutje in het deel tussen haakjes: (deze matchen ook de enters aan begin of eind van de regel)
en
de anchors: \A en \Z (en \a en \z???) zijn nog niet aan bod geweest, geloof ik! Misschien op de volgende pagina? Daar ben ik nog niet aan toe. Eerst deze in mijn hoofd zien te krijgen.

Pieter
Martijn B
Martijn B
12 jaar geleden
 
0 +1 -0 -1
Pagina 3: met /[yes]/i bedoel je denk ik /yes/i
Ron
Ron
11 jaar geleden
 
0 +1 -0 -1
Aardige tutorial. Wel jammer van de foutjes die er nog steeds inzitten. Arend, misschien een foutloze versie uploaden?

Ik heb een regexp tester pagina gebouwd omdat ik zelf behoefte heb aan het eenvoudig kunnen testen van m'n regexps (preg style). Dit is de pagina: http://www.amsweb.nl/regexp/regexp_tester.php.

Opbouwend commentaar welkom.
Arend a
Arend a
11 jaar geleden
 
0 +1 -0 -1
Beste ron, welke foutjes bedoel je?
Joris van Rijn
Joris van Rijn
9 jaar geleden
 
0 +1 -0 -1
Hier moet even de label 'top tutorial' op (:
Niels K
Niels K
9 jaar geleden
 
0 +1 -0 -1
Ansich een goed idee Joris, want deze tutorial heeft voor veel mensen een goede basis gelegd. Maar dat is voor mij als moderator (helaas) niet in te regelen. Naar ik heb begrepen is het PHPhulp programmeer team bezig met het realiseren van een Karma systeem. Goed mogelijk is dat er dan een lijst komt met de 'beste' tutorials / scripts, aangegeven door 'Karma' punten. Snap je?

Misschien moet je daarvoor eens contact op nemen met Bas ?
Jordi Kroon
Jordi Kroon
9 jaar geleden
 
1 +1 -0 -1
Waarom is sticky niet de taak van een moderators?
Niels K
Niels K
9 jaar geleden
 
0 +1 -0 -1
@Jordi
Ik heb toch niet gezegd dat het niet zo is.. Ik heb er alleen geen bevoegdheid toe. Volgens mij kan alleen Bas dit. Maar zoals ik al zei het Karma systeem zou best wel eens zo'n functie kunnen hebben. Maar ik zal eens informeren of het mogelijk is dat moderators 'sticky' scripts / tutorials kunnen aamaken. Ik weet dat dit wel met topics kan.

Niels
Erik van de Locht
Erik van de Locht
9 jaar geleden
 
0 +1 -0 -1
Na jaren lang snippets van internet te hebben gehaald heb ik besloten om er ook maar aan te geloven. Vooral omdat dezelfde regex's ook gebruikt worden in ruby, htaccess enzovoort. Met deze tutorial ben ik heel erg geholpen! Hier en daar inderdaad een foutje in de opbouw van de tekst en enkele typfoutjes maar dat neem ik voor lief ;-) Harstikke bedankt :)
Georg Kellersmann
Georg Kellersmann
6 jaar geleden
 
0 +1 -0 -1
Hoewel het al bejaarde tut is klein commentaar en een vraag.
Ben geen prof en ben er dus ook niet elke dag mee bezig. Zo stonden er in mijn scripts dus alleen maar ereg's en eregi's.
Heb langdurug geworsteld met preg_match maar dank zij de hulp van deze tut ben ik er uitgekomen.
Mijn bewondering, ondanks de kritische woorden van anderen over enkele foutjes.
Nu de vraag:
ik wil b.v. in naamvelden alleen maar geldige tekens hebben. Dus geen zoals #$%^&* etc. Daar heb ik hier noch verder op internet iets over kunnen vinden.
Kan iemand mij daarover iets vertellen?
Alvast bedankt.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
6 jaar geleden
 
Zou je die vraag in een forum topic kunnen stellen? Dit is niet de juiste plek daarvoor.

Alvast bedankt!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.