reguläre ausdrücke
-
Hallo,
bin grad dabei mich ein wenig mit C zu beschäftigen.
Folgendes Problem : hoffe ihr könnt helfenich HABE EINE Datei die ungefähr so aussieht
print word
printwenn das schlüsselwort print heißt und dahinter ein beliebiges wort soll nur das wort gedruckt werden,wenn nur print in der zeile steht soll alles gedruckt werden
hatte an reguläre ausdrücke gedacht.
wie kann ich eine Zeile(String) auf reguläre Ausdruck überprüfen
sscanf(zeile,"%^print$.... //schreibe alles (nach print zeilenende
ssaanf(zeile,"%^print [a-z]* //schreibe nur das wort
danke euch
gruß
-
Wie kann man
einen String auf einen bestimmten regulären Ausdruck überürüfenDanke euch
Gruß
-
Benutz doch einfach fgets und mach dann ein strcmp gegen "print".
-
Hallo
ich möchte eine String auf einen bestimmten regulären Ausdruck überprüfen:
char String[] = "i Word";
der regulärer Ausdruck [a-z]* große Buchstaben sind also nicht erlaubt
oder [^a] am Anfang soll ein a stehen.
Hat hierfür jemand ein rezept?
danke euch
-
Ist das jetzt ein neues Thema, das mit dem alten nichts mehr zu tun hat?
Naja, wirklich schwer ist das ja nicht, 'ne C-Bibliothek für reguläre Ausdrücke zu finden...
Für die glibc findest du hier eine Anleitung.
Weil ich das selbst nicht ganz uninteressant finde, hab ich mal probiert...
Sieht so aus:#define _POSIX_C_SOURCE 2 #include <stdio.h> #include <stdlib.h> #include <regex.h> int main(int argc, char **argv) { regex_t myregex; int comp_res = regcomp(&myregex, "[a-z]*", 0); if(comp_res != 0) { perror("Could not compile regex"); exit(EXIT_FAILURE); } const char *txtstr = "this is a text."; regmatch_t match[1]; int exec_res = regexec( &myregex, txtstr, 1, match, 0); if(exec_res ==REG_NOMATCH) { perror("Didn't match."); } else if(exec_res == REG_ESPACE) { perror("Run out or memory"); exit(EXIT_FAILURE); } else if(exec_res == 0) { puts("That's a match!"); char match_str[match[0].rm_eo - match[0].rm_so + 1]; int i, j; for(i=match[0].rm_so, j=0; i<match[0].rm_eo; ++i, ++j) match_str[j] = txtstr[i]; match_str[j] = '\0'; printf("%s\n", match_str); } exit(EXIT_SUCCESS); }