libpcre Subpattern: bekomme nur letzte Untergruppe

Gast #3162988
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren