Reguliere expressie vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Aron van der Linden

Aron van der Linden

10/02/2016 14:43:13
Quote Anchor link
Hallo, Ik als regExpressieBeet heb een probleem waar ik hulp bij kan gebruiken. Ik heb in een database tabel een veld met tekst, waarin altijd tussen vierkante haakjes twee getallen staan, gescheiden door een komma. dus bv:

"hallo daar [14.34555,22.52522] ik ben bert."

Hoe kan ik dmv een reguliere expressie deze twee getallen opvangen, om ze te gebruiken voor een berekening?

Dank en groeten.
 
PHP hulp

PHP hulp

14/12/2018 12:23:53
 
Wouter J

Wouter J

10/02/2016 14:50:13
Quote Anchor link
Een getal bestaat uit de cijfers 0 tot en met 9 en eventueel het teken . om de komma's te scheiden. Alles tussen [] in regex betekend dat het een van de tekens moet matchen dus [0-9] match eenmalig een teken 0, 1, 2, 3, ..., 9. Voor het gemak bestaat er \d, wat enkele decimal digit matched (dus 0-9).

Doormiddel van + geef je aan dat je 1 of meer moet matchen. \d+ matched dus 1 of meer getallen.
* matched 0 of meer, dus \d* kan niks matchen, maar ook 1 getal en ook 10000 getallen.
? matched 0 of 1. Dus \d? matched of 1 getal of geen getal.

De . betekend in regex elk teken, dus willen we de punt matchen dan moeten we deze escapen: \.

Voeg dit samen en we hebben de regex voor een getal dat eventueel decimalen kan hebben: \d+\.?\d* (minimaal 1 getal, gevolgt door optioneel een punt en eventueel nog meer getallen).

Nu willen we dit 2 keer doen met een komma ertussen: \d+\.?\d*,\d+\.?\d*

Vervolgens willen we beide getallen apart opslaan ("capture"), dit doe je door deze tussen haakjes te plaatsen: (\d+\.?\d*),(\d+\.?\d*)

We zijn bijna klaar, nu alleen nog zorgen dat we dit alleen matchen wanneer ze tussen blokhaken staan. Deze blokhaken hebben een betekenis in regex, dus moeten we ook deze escapen: \[ en \]

Voeg alles samen en je hebt: \[(\d+\.?\d*),(\d+\.?\d*)\]
Gewijzigd op 10/02/2016 14:51:04 door Wouter J
 



Overzicht Reageren

 
 

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.