Archief - PHP: regex gevraagd 0:-)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cyberkef

Legacy Member
Ik ben zo'n beetje aant spelen met een server query van en bepaalt game en ik krijg al output van de server, maar ik zou dat graag in een mooiere layout gieten... (tables that is)

Ik ben al een paar dagen bezig met een regex te zoeken om de serverstring op te splitsen in bruikbare delen, maar het lukt me dus echt niet :scream: hopelijk helpen jullie me uit de nood...

Eén van de lijnen is deze:

Code:
"<nick>" "<team>" "<version>" <slot> <state> <auth> "<chname>"

(in <nick> en <team> zijn geen spaties mogelijk maar wel tekens buiten a-z, in <version> weet ik het niet, in <chname> zitten er spaties en speciale tekens. <slot>, <state> en <auth> zijn getallen (0,1 of 2))

ik heb al veel dingen geprobeerd, maar het lukt me maar niet (ik krijg geen errors, hij vervangt het gewoon niet)

Bij deze kwam ik het laatst uit:

Code:
/\"(\S+)\"\s\"(\S+)\"\s\"(\S+)\"\s(\d+)\s(\d+)\s(\d+)\s\"(\S+)\"/

Ben ik ergenst (serieus) fout? :help:

killgore

Legacy Member
als "alle" tekens mogen: . gebruiken ipv die \S
Code:
/\"(\S+)\"\s\"(\S+)\"\s\"(.+)\"\s(\d+)\s(\d+)\s(\d+)\s\"(.+)\"/U
zekere de U niet vergeten vanachter voor alles ungreedy te maken he ;) (of achter elke + een ? zetten)

Oberon

Legacy Member
Code:
/^["]\w+["]\s["]\w+["]\s["]\w+["]\s\d+\s\d+\s\d+\s["].+["]$/i

Cyberkef

Legacy Member
Ahhh, merci killgore! works like a charm! :love:

Oberon, ook merci voor de moeite!!

Oberon

Legacy Member
killgore zei:
als "alle" tekens mogen: . gebruiken ipv die \S
Code:
/\"(\S+)\"\s\"(\S+)\"\s\"(.+)\"\s(\d+)\s(\d+)\s(\d+)\s\"(.+)\"/U
zekere de U niet vergeten vanachter voor alles ungreedy te maken he ;) (of achter elke + een ? zetten)

* staat voor "zero or more times"
? staat voor "zero or one time"
+ staat voor "one or more times"

Dus ófwel gebruike je * ófwel + ófwel ? maar niet achter elkaar :p

Slicer

Legacy Member
+? staat voor "one or more times and smallest possible match"
*? staat voor "zero or more times and smallest possible match"

dat is als je geen U van ungreedy vermeld want anders is het omgekeerd ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan