[C] kent C een strcmp die regular expres. ondersteund?

Pagina: 1
Acties:

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
Bestaat er in C een strncmp / strcmp achtig iets dat meteen regular expressions ondersteund ??

ik wil dat


func("dit is mijn naam","*it*i* *aam*") TRUE geeft.
Ik kan dit zelf gaan bouwen maar het lijkt me sterk dat dit niet in standaard C al zit meegebakken ??

Kernigan & Ritchie zegt echter niets over zoiets.. kan iemand van jullie uitsluitsel geven voor ik deze functie ga bouwen ??

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-08 07:59

chem

Reist de wereld rond

gewoon de PCRE library includen?

Klaar voor een nieuwe uitdaging.


  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
die ken ik niet..

uit je antwoord maak ik op dat het standaard niet aanwezig is en dat ik het
- OF moet bouwen
- OF uit die lib moet halen


oki... aan de slag :)

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Als je alleen '?' en '*' nodig hebt en geen volledige regex, dan kun je de volgende (hopelijk bug-vrije) code gebruiken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bool fname_filter(string fname, string filter)
{
    for (int i = 0; i < filter.length(); i++)
    {
        char c = filter[i];
        if (c == '*')
        {
            if (filter.find('*', i + 1) == string::npos)
            {
                int j = fname.length() - filter.length() + 1;
                return j < 0 ? false : fname_filter(fname.substr(i + j), filter.substr(i + 1));
            }
            // for (int j = 0; j < min(fname.length(), filter.length()) - i; j++)
            for (int j = 0; j < fname.length(); j++)
            {
                if (fname_filter(fname.substr(i + j), filter.substr(i + 1)))
                    return true;
            }
            return false;
        }
        if (c != '?' && c != fname[i])
            return false;
    }
    return fname.length() == i;
}

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-08 07:59

chem

Reist de wereld rond

xychix schreef op 18 november 2003 @ 15:11:
die ken ik niet..

uit je antwoord maak ik op dat het standaard niet aanwezig is en dat ik het
- OF moet bouwen
- OF uit die lib moet halen


oki... aan de slag :)
http://www.pcre.org/ dus :)

Klaar voor een nieuwe uitdaging.


  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
OlafvdSpek schreef op 18 november 2003 @ 15:11:
Als je alleen '?' en '*' nodig hebt en geen volledige regex, dan kun je de volgende (hopelijk bug-vrije) code gebruiken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bool fname_filter(string fname, string filter)
{
    for (int i = 0; i < filter.length(); i++)
    {
        char c = filter[i];
        if (c == '*')
        {
            if (filter.find('*', i + 1) == string::npos)
            {
                int j = fname.length() - filter.length() + 1;
                return j < 0 ? false : fname_filter(fname.substr(i + j), filter.substr(i + 1));
            }
            // for (int j = 0; j < min(fname.length(), filter.length()) - i; j++)
            for (int j = 0; j < fname.length(); j++)
            {
                if (fname_filter(fname.substr(i + j), filter.substr(i + 1)))
                    return true;
            }
            return false;
        }
        if (c != '?' && c != fname[i])
            return false;
    }
    return fname.length() == i;
}
thanks.. maar dat word iets als dit bouwen in C... geen ++ :P
PCRE.org there we go

[ Voor 6% gewijzigd door xychix op 18-11-2003 15:18 ]

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
xychix schreef op 18 november 2003 @ 15:13:
thanks.. maar dat word iets als dit bouwen in C... geen ++ :P
PCRE.org there we go
Dit is toch redelijk letterlijk naar C te vertalen?
Maar waarom C in plaats van C++?

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
OlafvdSpek schreef op 18 november 2003 @ 15:18:
[...]

Dit is toch redelijk letterlijk naar C te vertalen?
Maar waarom C in plaats van C++?
niet een speciale reden.. wil gewoon in C blijven met dit tooltje.. lekker met pointers smijten enzo... ja ik weet dat dat ook in C++ kan.....

En een vertaal actie zal het ook wel worden.. ik zie in die pcre.h nou niet echt handige funcities.

[ Voor 15% gewijzigd door xychix op 18-11-2003 15:25 ]

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

OlafvdSpek schreef op 18 november 2003 @ 15:11:
Als je alleen '?' en '*' nodig hebt en geen volledige regex, dan kun je de volgende (hopelijk bug-vrije) code gebruiken:
ik zou van die string's wel const string &'s maken, dat scheelt een hoop gegooi met geheugen bij lange strings e.d.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
xychix schreef op 18 november 2003 @ 15:25:
niet een speciale reden.. wil gewoon in C blijven met dit tooltje.. lekker met pointers smijten enzo... ja ik weet dat dat ook in C++ kan.....
Kun je in C++ niet lekker met pointers smijten dan?

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
OlafvdSpek schreef op 18 november 2003 @ 15:29:
[...]

Kun je in C++ niet lekker met pointers smijten dan?
jazeker wel, ik gaf dat ook al aan.... ik heb er geen reden voor :)
ik vind een char* gewoon leuker dan een string denk ik...

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom dan? Wat kun je met char * wat je niet met std::string kan?

[ Voor 72% gewijzigd door .oisyn op 18-11-2003 15:43 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
.oisyn schreef op 18 november 2003 @ 15:29:
ik zou van die string's wel const string &'s maken, dat scheelt een hoop gegooi met geheugen bij lange strings e.d.
Heb ik net gedaan (is ook handiger met debuggen), ondanks dat ik nog een implementatie heb die met reference counting werkt.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
xychix schreef op 18 november 2003 @ 15:35:
jazeker wel, ik gaf dat ook al aan.... ik heb er geen reden voor :)
ik vind een char* gewoon leuker dan een string denk ik...
Maar in C++ kun je toch ook met char* werken?

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
Olaf, ja ik zou het misschien beter in Cpp kunnen doen.. zal ik nog eens over denken... nu even niet :P but you made your point.


laten we gaan testen... :) uiteindelijke code volgt... ow.. en lekkker smerig geprogged he ???? })
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int strregcmp(const char * a, const char * b);

int main(int argc, char **argv)
{
    printf("%d = strregcmp(%s,%s);",strregcmp(argv[1],argv[2]), argv[1],argv[2]);
}

int strregcmp(const char * a, const char * b)
{
    char *needle;
    char *home;
    char *p;

    //copy the input to own mem space
    home = (char*)malloc(strlen(a)+1);
    strcpy(home,a);
    needle = (char*)malloc(strlen(b)+1);
    strcpy(needle,b);
    
    //strip the starting * from needle
    for(;*needle=='*';needle++);
    //strip the ending * from needle
    for(p=(needle + strlen(needle)-1);*p=='*';p--)*p=0x00;

    //zorg dat needle alleen het eerst volgende stukje is omvat
    while(needle < p)
    {
        if(p = strstr(needle,"*"))*p=0x00;
        if(!(home=strstr(home,needle)))
        {
            return(-1);
        }
        else
        {
            needle = p+1;
        }
    }
    return(0);
}

[ Voor 33% gewijzigd door xychix op 18-11-2003 16:15 ]

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
Ontopic: Standaard zit het niet in C dus het is niet zo gek dat je het niet in K&R kunt vinden. Algemeen gesproken zijn de dingen die in C zitten zo simpel en elementair mogelijk. Dat was ook 1 van de doelstellingen bij het ontwerpen van de taal en de aangeplakte standaard libraries.

Maar zoals al gemeld zijn er mensen die eerder met dit probleem hebben geworsteld en hun werk beschikbaar hebben gesteld.

offtopic:
.oisyn schreef op 18 november 2003 @ 15:43:
Waarom dan? Wat kun je met char * wat je niet met std::string kan?
Olie op vuur: Waarom zou je C++ gebruiken als je ook C kunt gebruiken?

Een paar redenen om C ipv C++ te gebruiken
1) Je past een programma aan en dat programma was al in C
2) Je kunt beter met C overweg dan met C++
3) Je bent te lui om C++ te leren
4) Dat wat je wilt is zo simpel of straight forward dat het in C makkelijker/sneller is dan in C
5) Het probleem is makkelijker in een functionele taal dan in een object georienteerde taal.
etc
etc
etc

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
ritsjoena schreef op 18 november 2003 @ 16:01:

Olie op vuur: Waarom zou je C++ gebruiken als je ook C kunt gebruiken?
alleereerst dank voor je antwoord...
2 PLEASE niet een C vs. C++ discussie hier.... please ??? :>

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

ritsjoena schreef op 18 november 2003 @ 16:01:
Olie op vuur: Waarom zou je C++ gebruiken als je ook C kunt gebruiken?
waarom C gebruiken als je ook pascal kunt gebruiken? Dat is net zo'n onzinnige opmerking imho :)
Een paar redenen om C ipv C++ te gebruiken
1) Je past een programma aan en dat programma was al in C
dat is idd een zinnige reden, maar daar ging het hier niet om. Het originele programma van de topicstarter is waarschijnlijk C, maar het ging ons erom waarom hij niet wilt overwegen om de overstap naar C++ te doen. Dus waarom ie niet gewoon überhaupt in C++ is begonnen met z'n programma :)
2) Je kunt beter met C overweg dan met C++
Het gros van de C programma's compileert ook onder een C++ compiler, dus dat maakt niet zoveel uit. Je zit alleen met een ietwat strictere typechecking (zoals conversies van void * naar T * die niet zomaar mogen in C++ maar wel in C). Ik heb zelf ook ooit de overstap van C naar C++ gedaan door gewoon C code te schrijven en door een C++ compiler te gooien, en ben langzamerhand gewoon steeds meer en meer C++ features gaan gebruiken.

Daarom snap ik het nut ook niet helemaal om niet C++ te programmeren. C++ is niet anders, het is slechts meer. De argumenten die je geeft gaan veel meer op als je bijvoorbeeld C met Java vergelijkt oid, maar niet bij C vs. C++

Je bent niet verplicht om de C++ features te gebruiken, dat is het mooie ervan
3) Je bent te lui om C++ te leren
vind ik geen valide reden, zeker als je punt 2 in overweging neemt. Bovendien schrijft een C++ programma, zeker als je een geoefend C++ programmeur bent, velen malen sneller weg dan een C programma. Veel dingen hoef je niet meer zelf te implementeren, zoals dynamische arrays, gelinkte lijsten, hash tables, memory management, etc. Het loont dus zeker de moeite om even die extra moeite erin te steken om het te leren, want die extra tijd die je erin steekt heb je er zo weer uit
4) Dat wat je wilt is zo simpel of straight forward dat het in C makkelijker/sneller is dan in C++
Zie 2)
5) Het probleem is makkelijker in een functionele taal dan in een object georienteerde taal.
Zie 2), bovendien bedoel je procedurele taal, een functionele taal is heel wat anders
etc
etc
etc
daar kan ik niets mee :P

De meest valide reden die ik kan bedenken en die niet in je rijtje staat is dat de C++ compiler voor het platform waarvoor je ontwikkelt niet bestaat of heel brak is :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
De reden dat ik het deed was inderdaad het uitlokken van een reactie. O-) O-)

Een andere reden om C te gebruiken is overigens dat de opgever dat wil en ja veel argumenten gelden voor elke overstap. ;)

Waar ik af en toe wel moe van wordt en wat mijn reactie eigenlijk inhoud is dat vaak beweerd wordt dat C++ beter/superieur is dan/aan C, terwijl dat eigenlijk niet zo is. :(

Alles wat je in C++ kan kun je ook in C. Sommige dingen zijn in de ene taal makkelijker dan in de andere taal, maar het kan beide.

Het is de kunst om de juiste taal voor het juiste probleem te kiezen of het nu C, C++ of welke andere taal dan ook is te kiezen.

Bedankt voor het mij erop wijzen dat ik de termen weer eens door elkaar gehaald heb. ;9

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
ritsjoena schreef op 18 november 2003 @ 16:49:
Alles wat je in C++ kan kun je ook in C. Sommige dingen zijn in de ene taal makkelijker dan in de andere taal, maar het kan beide.
Oh ja?

Met C++ bedoel ik eigenlijk alleen maar het gebruik van een C++ compiler/extensie en niet het gebruik van OO en STL.
Als je (of iemand anders) dan later wel OO of STL wil gebruiken is dat mogelijk, terwijl als je met een C compiler begint, dat eigenlijk niet meer te doen is.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

ritsjoena schreef op 18 november 2003 @ 16:49:
Een andere reden om C te gebruiken is overigens dat de opgever dat wil en ja veel argumenten gelden voor elke overstap. ;)
agreed, maar ik had het meer over de hobby-sfeer. Als je gewoon werkt dan heb je zelf over het algemeen vrij weinig in te brengen over de keuze van de gebruikte taal, en dan zijn alle hierboven genoemde argumenten al niet meer relevant ;)
Waar ik af en toe wel moe van wordt en wat mijn reactie eigenlijk inhoud is dat vaak beweerd wordt dat C++ beter/superieur is dan/aan C, terwijl dat eigenlijk niet zo is. :(
Uhm, ik zou toch wel willen zeggen dat C++ beter en superieur is aan C. C++ is namelijk min of meer een superset van C, dus het heeft alles wat C heeft, en nog meer. Dat maakt het automatisch al superieur :)
Alles wat je in C++ kan kun je ook in C. Sommige dingen zijn in de ene taal makkelijker dan in de andere taal, maar het kan beide.
Als je je stelling omdraait gaat ie beter op, maar idd. Natuurlijk kun je in C OO programmeren. Maar wil je dat ook? Wil je al die extra tijd erin steken als je ook gewoon C++ kan kiezen, die dat vanuit de fabriek al ondersteund? Als je dan bij C blijft hangen heeft dat imho gewoon meer te maken met eigenwijs zijn dan met een goede reden hebben om geen C++ te kiezen ;)
Het is de kunst om de juiste taal voor het juiste probleem te kiezen of het nu C, C++ of welke andere taal dan ook is te kiezen.
Mee eens, maar aangezien C++ kan wat C kan (zonder moeilijk te doen, want andersom wel zo is), maakt dat C++ ook automatisch ergens voor geschikt als C daar ook geschikt voor is :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
WERKEND, als iemand zich geroepen voelt mag het opgeschoond worden :P doe ik ooit nog wel eens..

als iemand lekken / gaten ziet.... GRAAG!!! ff melden

owja * staat voor iets tussen de 0 en N tekens..

strregcmp("aaaa","***a***a***a***a***") is dus GELDIG

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int strregcmp(const char * a, const char * b);

int main(int argc, char **argv)
{
    printf("%d = strregcmp(%s,%s);\n",strregcmp(argv[1],argv[2]), argv[1],argv[2]);
}

int strregcmp(const char * a, const char * b)
{
    char *needle;
    char *home;
    char *p;
    char *homeEnd;

    //copy the input to own mem space
    home = (char*)malloc(strlen(a)+1);
    strcpy(home,a);
    needle = (char*)malloc(strlen(b)+1);
    strcpy(needle,b);
    
    //strip the starting * from needle
    for(;*needle=='*';needle++);
    //strip the ending * from needle
    for(p=(needle + strlen(needle)-1);*p=='*';p--)*p=0x00;

    homeEnd = home + strlen(home);
    
    //zorg dat needle alleen het eerst volgende stukje is omvat
    while(home < homeEnd)
    {
        if(p = strstr(needle,"*"))
    {
        *p=0x00;
    }
    else
    {
        //dit is gegarandeerd het laaste te vergelijken stukkie
        if(strstr(home,needle))
            return(0);
        else
            return(-1);
    }
        if((home=strstr(home,needle) + strlen(needle)))
        {
        //gevonden maar nog needle over!
        for(needle=p+1;*needle=='*';needle++);
        //printf("home   : %s\nneedle : %s\n",home,needle);
        
        }
        else
        {
        //not found. meteen maar kappen
        return(-1);
        }
    }
    return(-1);
}

[ Voor 17% gewijzigd door xychix op 18-11-2003 18:57 ]

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik gok dat er een bug in zit, maar ik moet hem nog even vinden. ;->

1. Waarom zet je main boven in plaats van onderaan?
2. Je bent return in main vergeten.
3. Je indentatie (sp?) klopt niet.
4. De code crashed als je geen argumenten meegeeft.
5. Kijk eens naar strdup (in plaats van strlen en malloc).
6. Gevonden: 0 = strregcmp(aabaabaa,*a*b)

[ Voor 90% gewijzigd door Olaf van der Spek op 18-11-2003 19:24 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 16-08 21:36
Wel C++ noemen, en niet op boost::regex wijzen is wel zonde. Dat wordt zelfs zo goed als zeker std::regex, het is dus een blijvertje ( de interface dan, Microsoft heeft al een alternatieve implementatie. Regex optimalisatie is nog steeds actueel. )

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Ik vind het jammer dat je de argumenten intern moet kopiëren; misschien kun je je code zo aanpassen dat dat niet meer nodig is. Als je dan toch gaat kopiëren, moet je in ieder geval het gealloceerde geheugen weer vrijgeven en bovendien is het makkelijker om strdup() te gebruiken.

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

Topicstarter
Soultaker schreef op 18 november 2003 @ 19:20:
Ik vind het jammer dat je de argumenten intern moet kopiëren; misschien kun je je code zo aanpassen dat dat niet meer nodig is. Als je dan toch gaat kopiëren, moet je in ieder geval het gealloceerde geheugen weer vrijgeven en bovendien is het makkelijker om strdup() te gebruiken.
Jammer ??? je wilt juist niet de originelen verkloten
SCHAAM... idd moet nog freeeen
strdup() zoeken we op


en JA tuurlijk klapt ie zonder input.. maar ik had ut meer over de functie :P bouw dr dan zelf ff een nette main bij

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
xychix schreef op 18 november 2003 @ 19:27:
Jammer ??? je wilt juist niet de originelen verkloten
SCHAAM... idd moet nog freeeen
strdup() zoeken we op


en JA tuurlijk klapt ie zonder input.. maar ik had ut meer over de functie :P bouw dr dan zelf ff een nette main bij
Hij wil een functie die de input niet modified (en niet copied).

Nettere main:
C++:
1
2
3
4
5
6
int main(int argc, char **argv)
{
    if (argc >= 2)
        printf("%d = strregcmp(\"%s\", \"%s\");\n",strregcmp(argv[1],argv[2]), argv[1],argv[2]);
    return 0;
}

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Xychix, heb je de bug gefixed?

Verwijderd

MSalters schreef op 18 november 2003 @ 19:16:
Wel C++ noemen, en niet op boost::regex wijzen is wel zonde. Dat wordt zelfs zo goed als zeker std::regex, het is dus een blijvertje ( de interface dan, Microsoft heeft al een alternatieve implementatie. Regex optimalisatie is nog steeds actueel. )
Er is momenteel een betere regex voor c++, begrijp dat deze ook potentiëel kandidaat is om in de standaard op te worden genomen. Zie GRETA. Voordeel is dat het wat meer gebruik maakt van de ++-punten van C++ dan Boost:RegEx. Dit is trouwens dat Microsoft product, begrijp dat het in principe 2 native intefaces heeft (eentje voor statische expressies en eentje voor dynamische), misschien dat die dynamische interface gelijk is aan Boost:RegEx maar het is juist die statische (compiletime) interface die interessant is.
Of anders is er altijd nog Spirit, tegenwoordig ook onderdeel van Boost maar de ontwikkelingen gaan iets sneller op de Spirit site. GRETA is trouwens geïnspireerd door Spirit; intern vertonen ze zeer veel overeenkomsten en momenteel wordt er zelfs gewerkt om beide libraries bijeen te voegen (beide ontwikkelaars zijn dan ook werknemers van boost-consulting.com).

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 16-08 21:36
Spirit is iets heel anders; dat is een generieke parser met een fixed grammar, die zelfs voor complexe grammatica's nog behapbaar blijft omdat je 'm kunt opslitsen in meerdere regels. Regex'en zijn enerzijds veel gespecialiseerdere parsers, aan de andere kant met de flexibiliteit om een grammatica run-time te definieren. Je moet dan wel alles in een expressie zetten, en er is feitelijk geen reuse. Geneste grammatica's (zeg XML) zijn dan ook nauwelijks tot niet te parsen met Regex'en.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1