Forum: PC-Programmierung libpcre Subpattern: bekomme nur letzte Untergruppe


von Sebi (Gast)


Lesenswert?

Ich beschäftige mich grad mit der libPCRE.a
Ich schreibe in C, und hab dazu folgenden Code:
1
int* get_token(char* string) {
2
  re = pcre_compile("(([0-9]+){1}\\s{1}([\\+|\\-|\\/|\\*]\\s{0,1})+",0,&error,&offset,NULL);
3
  sd = pcre_study(re,0,&error);
4
  rc = pcre_exec(re,sd,string,strlen(string),0,0,ovector,30);
5
  return &rc;
6
}
7
8
int main() {
9
  int* token;
10
  printf("Hello World!\r\n");
11
  printf("Exec RegExp!\r\n");
12
  char ausdruck[25];
13
  gets(ausdruck);
14
  printf("Your Input: %s\r\n",ausdruck);
15
  token = get_token(ausdruck);
16
  printf("%d: %s\r\n",offset,error);
17
  int i = 0;
18
  for(i=0;i<sizeof(ovector) / sizeof(int);i+=2) {
19
  printf("%d - %d\t",ovector[i],ovector[i+1]);
20
  }
21
  printf("\r\n");
22
  exit(0);
23
}
Jetzt bekomm ich aus der obersten Untergruppe immer nur an der letzten 
Stelle nen Match, z.B. bei der Eingabe "3 + 3 + 3 "
Bekomme ich die Ausgabe: 0-8,4-8,4-5,6-7
Das ist die letzte Untergruppe, ich hätte jetzt eigentlich erwartet das 
er mir die erste Untergruppe ausspruckt beim ersten Aufruf, weil sie ja 
zuerst im String erscheint... Hab ich einen Fehler gemacht, er sollte 
eigentlich von vorn nach hinten arbeiten, also sprich so:
0-8,0-4,0-1,2-3... und beim zweiten aufruf halt obige ausgabe dann.
Oder eigentlich die ganzen Subpattern mit einen aufruf, halt so:
0-8,0-4,0-1,2-3,4-8,4-5,6-7

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.