![]() |
|
|||||
|
Reguläre AusdrückeIn vielen Programmen werden zum Suchen von Mustern reguläre Ausdrücke verwendet. Beeindruckend ist, dass alle Programme die Ausdrücke gleich interpretieren. Das liegt allerdings nicht in erster Linie an der Harmoniesucht der UNIX-Programmierer, sondern einfach daran, dass UNIX die benötigten Funktionen als Bibliothek zur Verfügung stellt.
Nach POSIX-Standard werden vier Funktionen zur Verfügung gestellt:
Als Beispiel dient hier eine einfache Nachbildung des Programmes
[Regulärer Ausdruck in grep] #include <stdlib.h> #include <stdio.h> #include <regex.h>
int main(int argc, char *argv[])
{
char puffer[512];
int i;
regex_t regexpr;
FILE *fp;
if (argc<3) {
printf("Usage: %s regexpression filesn", argv[0]);
return -1;
}
if (regcomp(®expr, argv[1], REG_EXTENDED|REG_NEWLINE)) {
printf("Problem beim Ausdruck %sn", argv[1]);
return -2;
}
for (i=2; i<argc; i++) {
fp = fopen(argv[i], "r");
if (fp!=NULL) {
while (!feof(fp)) {
fgets(puffer, sizeof(puffer)-1, fp);
if (regexec(®expr, puffer, 0, NULL, 0)==0) {
puts(puffer);
}
}
fclose(fp);
}
}
regfree(®expr);
return 0;
}
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||