#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  regex_t preg;

  const char *string =
      "[com.example.app.JavaClass.JavaMethod(JavaClass.java:1)] (Thread-1) - "
      "Client: FirstName MiddleName AnotherName LastName, Wallet: WL01, "
      "Agency: 9999, ID: 06611486123, Ticket: TKR211";
  const char *pattern = "Client:\\s[a-zA-Z[:space:]]+";

  size_t nmatch = 1;
  regmatch_t pmatch[1];

  regcomp(&preg, pattern, REG_ICASE | REG_EXTENDED);

  int ret = regexec(&preg, string, nmatch, pmatch, 0);

  char *match = calloc(pmatch[0].rm_eo - pmatch[0].rm_so, sizeof(char));
  memcpy(match, &string[pmatch[0].rm_so], pmatch[0].rm_eo - pmatch[0].rm_so);

  printf("ret: %d\n", ret);
  printf("rm_eo0: %d\n", pmatch[0].rm_eo);
  printf("rm_so0: %d\n", pmatch[0].rm_so);

  printf("Match: %s\n", match);

  regfree(&preg);

  return 0;
}