PDA

Volledige versie bekijken : regular expresions


theFlashWizard
%Europe/Berlin %499 %2006, 12:58
Hey mensjes,
Ik probeer mezelf wat dom werk te besparen door te werken met regular expresions.
Ik gebruik editPlus, daarbij kan je vervangen met regular expresions.

Zo wil ik in dit voorbeeldje:
<scenario>
<uitleg>Je omas verjaardag
Je bent bij je Oma op visite en het is vreselijk saai. Je was liever samen met je vrienden naar Ajax-Feyenoord gegaan. Maar gelukkig is het nog niet te laat. Als je nu weg sluipt, kan je nog de trein naar Rotterdam pakken om de wedstrijd bij te wonen. Dit is het perfecte moment om is te vragen wat de supporters er van vinden. </uitleg>
dat hij de bovenste zin in uitleg in een name attribuut van scenario zet en de enters uit uitleg haalt:
<scenario name="Je omas verjaardag">
<uitleg>Je bent bij je Oma op visite en het is vreselijk saai. Je was liever samen met je vrienden naar Ajax-Feyenoord gegaan. Maar gelukkig is het nog niet te laat. Als je nu weg sluipt, kan je nog de trein naar Rotterdam pakken om de wedstrijd bij te wonen. Dit is het perfecte moment om is te vragen wat de supporters er van vinden. </uitleg>
maar.. hoe?

Nou kan ik het stukje selecteren dat ik wil aanpassen met de volgend expression:
<scenario>\n[ \t]*<uitleg>[ a-z0-9]*\n[ \t]*
alleen.. hoe pak ik dat [ a-z0-9] er nou uit om dat ergens anders neer te zetten?

Nou weet ik dat je alles dat je geselecteerd hebt kan hergebruiken met \0, maar verder kom ik niet.

Alvast bedankt

TheZwier
%Europe/Berlin %529 %2006, 13:41
In welke taal ben je bezig?
Je kan in php met $1 $2 $3 allerlei gedeeltes van je regular expression selecteren.
En ik denk dat dat ook zo is met \1 \2 \3

//edit:
In php werkt het zo:
$regex = "/<scenario>
<uitleg>(.*)/";
$replace = "<scenario>
<uitleg>Je omas verjaardag\n
Je bent bij je Oma op visite en het is vreselijk saai. Je was liever samen met je vrienden naar Ajax-Feyenoord gegaan. Maar gelukkig is het nog niet te laat. Als je nu weg sluipt, kan je nog de trein naar Rotterdam pakken om de wedstrijd bij te wonen. Dit is het perfecte moment om is te vragen wat de supporters er van vinden. </uitleg>";
echo htmlspecialchars(preg_replace($regex, "<scenario name='$1'><uitleg>", $replace));

Ik moet alleen zeggen dat het niet heel netjes gemaakt is met harde enters inde regex, maar het werkt wel.

theFlashWizard
%Europe/Berlin %548 %2006, 14:09
hihi geen taal dus ;)
gewoon het vervangen scherm van editPlus. Maar die ondersteunt wel regular expresions

maar.. je hebt dus nu *. tussen haakjes gezet waardoor hetgeen dat daar staat in $1 komt?

Ik ga even wat proberen :)

theFlashWizard
%Europe/Berlin %560 %2006, 14:27
Jeej gelukt!
dit:
<scenario>[ \t]*\n\t\t\t<uitleg>([a-z ]*)\n\t*
vervangen voor:
<scenario name="\1">\n\t\t\t<uitleg>

thnx theZwier voor die haakjes tip :)

TheZwier
%Europe/Berlin %562 %2006, 14:30
Graag gedaan :)