Hulp nodig bij het gebruik van regular expressions

Plaats hier berichten die in eerste instantie niets te maken hebben met Mozilla, de activiteiten van ProMozilla en ThunderbirdNL of met de artikelen op MozBrowser.
Erik
Moderator
Berichten: 244
Lid geworden op: 4 februari 2004, 15:33
    unknown unknown

Hulp nodig bij het gebruik van regular expressions

Bericht door Erik » 23 oktober 2004, 12:39

Ik zit al een tijdje mijn tanden stuk te bijten op regular expressions. Wat ik wil is eigenlijk heel simpel (hier is een voorbeeldje):

[tussenkopje] Dit is het eerste tussenkopje
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean elementum hendrerit mauris. Aenean sed libero ac nunc cursus auctor. In in nulla. Vestibulum commodo, purus non pulvinar varius, diam nunc imperdiet leo, nec venenatis pede sem id lorem. Aliquam erat volutpat. Sed sem. Cras ac felis non nulla pulvinar faucibus. Donec accumsan massa sed

Nu moet [tussenkopje] gematcht worden. Vervolgens moet dat weggehaald worden en vervangen worden door < b >Dit is het eerste tussenkopje< /b >< /br >.

Eigenlijk weet ik alleen hoe ik [tussenkopje] moet matchen: \[tussenkopje\]

Wie helpt mij uit de brand?
~ Erik
- Mede-Beheerder MozBrowser.nl (inclusief Forum)
- Redacteur Livre Magazine

Gebruikersavatar
Gert-Paul
Berichten: 2358
Lid geworden op: 4 maart 2004, 17:48
    unknown unknown

Bericht door Gert-Paul » 23 oktober 2004, 13:12

IK heb een paar jaar geleden wel wat in PHP geprogrammeerd en ook wel regexps gebruikt dus ik zal proberen je te helpen.

Ten eerste vraag ik me af in welke taal je dit nodig hebt. Ik ga hieronder dus eventjes van PHP uit, ik verwacht dat andere talen wel gelijke contrudcties zullen hebben.
Zo kun je het met PHP zo bereiken:

Code: Selecteer alles

$tekst = ereg_replace("\[Dit is het eerste tussenkopje\]", "<b>Dit is het eerste tussenkopje</b><br />", $text); 
Eigenlijk is dit gewoon een regexps die als verplaats functie gebruikt wordt. Er komt namelijk geen variable tekst in terug.

Meer informatie over Regexps in PHP is trouwens oa hier te vinden en ook als je niet in PHP bezig bent zal er vast wel iets nuttigs bijstaan.

Erik
Moderator
Berichten: 244
Lid geworden op: 4 februari 2004, 15:33
    unknown unknown

Bericht door Erik » 23 oktober 2004, 13:24

Gert-Paul schreef: Eigenlijk is dit gewoon een regexps die als verplaats functie gebruikt wordt. Er komt namelijk geen variable tekst in terug.
De tekst van het kopje kan verschillen. Dit is dus een variabele in feite. Voor ieder kopje staat [tussenkopje]. Dat moet weggehaald worden en vervangen worden door < b >$de_titel_string_hier< /b >< br / >. Het gaat trouwens om de taal perl. Voor het gebruik in het programma txt2html.

Alvast bedankt
~ Erik
- Mede-Beheerder MozBrowser.nl (inclusief Forum)
- Redacteur Livre Magazine

Gebruikersavatar
Gert-Paul
Berichten: 2358
Lid geworden op: 4 maart 2004, 17:48
    unknown unknown

Bericht door Gert-Paul » 23 oktober 2004, 13:47

Erik schreef:
Gert-Paul schreef: Eigenlijk is dit gewoon een regexps die als verplaats functie gebruikt wordt. Er komt namelijk geen variable tekst in terug.
De tekst van het kopje kan verschillen. Dit is dus een variabele in feite. Voor ieder kopje staat [tussenkopje]. Dat moet weggehaald worden en vervangen worden door < b >$de_titel_string_hier< /b >< br / >. Het gaat trouwens om de taal perl. Voor het gebruik in het programma txt2html.

Alvast bedankt
OK, ik vatte het iets te letterlijk op. Het enige wat me nog niet duidelijk is is de relatie tussen [tussenkopje] en $de_titel_string_hier.

Volgensmij lijken de PERL regexps erg op die van PHP, dus dat is makkelijker.

Een willekeurig karakter is . in een regexps en de + duidt erop dat hij 1 of vaker voor moet komen

Code: Selecteer alles

$tekst = ereg_replace("\[.+\]", "<b>$de_titel_string_hier</b><br />", $text);
Ik heb nog snel gezocht en hier een lijst functies voor perl regexps.

Gebruikersavatar
nirwana
Beheerder
Berichten: 11348
Lid geworden op: 19 september 2003, 5:09
    unknown unknown

Bericht door nirwana » 23 oktober 2004, 14:45

Gert-Paul schreef:OK, ik vatte het iets te letterlijk op. Het enige wat me nog niet duidelijk is is de relatie tussen [tussenkopje] en $de_titel_string_hier.
Ik begrijp Erik volgens mij wel.
Nu heeft hij
[tussenkopje] Dit is het eerste tussenkopje
Dit wil hij vervangen door
<b>Dit is het eerste tussenkopje</b>
De tekst die achter het voorkomen van [tussenkopje] staat moet dus tussen die bold-tags terecht komen. Dat is geen standaard-tekst, want er staat steeds een andere tekst achter. Alleen het woord [tussenkopje] is wel standaard.
Met vriendelijke groet,

Martijn
[ Mede-oprichter + webmaster MozBrowser | beheerder Startpagina's over freeware, GIMP, Mozilla en OpenOffice.org / LibreOffice, Ubuntu

Gebruikersavatar
Gert-Paul
Berichten: 2358
Lid geworden op: 4 maart 2004, 17:48
    unknown unknown

Bericht door Gert-Paul » 23 oktober 2004, 18:51

Bedankt Martijn. Ik snap het nu en zie het ook duidelijk in Erik's post staan. Waarschijnlijk iets te snel gelezen.

Dit zou PHP Code zijn die zoiets zou doen. en die uitgaat van 1 spatie.

Code: Selecteer alles

$tekst = ereg_replace("^\[tussenkopje\][ ]{1}(.+)$", "<b>\\1</b><br />", $text);
In Perl zal de regexp waarschijnlijk wel kloppen. Ik weet alleen niet of \\x in perl te gebruiken is om tekst uit de regexp terug te vragen die je in een groep zet (een groep kun je aanmaken door haakjes te gebruiken). Dit moet je dus zelf eventjes proberen.

Gebruikersavatar
nirwana
Beheerder
Berichten: 11348
Lid geworden op: 19 september 2003, 5:09
    unknown unknown

Bericht door nirwana » 23 oktober 2004, 20:13

Volgens mij werkt Perl in dat geval met een $1, maar dat is net hoe de syntax van een taal in elkaar steekt.
Met vriendelijke groet,

Martijn
[ Mede-oprichter + webmaster MozBrowser | beheerder Startpagina's over freeware, GIMP, Mozilla en OpenOffice.org / LibreOffice, Ubuntu

Erik
Moderator
Berichten: 244
Lid geworden op: 4 februari 2004, 15:33
    unknown unknown

Bericht door Erik » 24 oktober 2004, 9:47

nirwana schreef:Volgens mij werkt Perl in dat geval met een $1, maar dat is net hoe de syntax van een taal in elkaar steekt.
Inderdaad.. ik zal even kijken of ik hiermee vooruit kan. Bedankt in ieder geval, Gert-Paul!
~ Erik
- Mede-Beheerder MozBrowser.nl (inclusief Forum)
- Redacteur Livre Magazine

Gebruikersavatar
nirwana
Beheerder
Berichten: 11348
Lid geworden op: 19 september 2003, 5:09
    unknown unknown

Bericht door nirwana » 27 oktober 2004, 23:05

Dit kwam ik ook nog net tegen op het gebied van regexp:
http://www.meyerweb.com/eric/thoughts/2 ... sion-help/
Eric (met een c ditmaal) heeft er ook de nodige problemen mee.
Met vriendelijke groet,

Martijn
[ Mede-oprichter + webmaster MozBrowser | beheerder Startpagina's over freeware, GIMP, Mozilla en OpenOffice.org / LibreOffice, Ubuntu