#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
#include <string.h>
void match_all(regex_t *p, char *sz) {
regmatch_t whole_match;
int match = 0;
size_t offset = 0;
char result[BUFSIZ];
int len;
while (regexec(p, sz + offset, 1, &whole_match, 0) == 0) {
match = 1;
len = whole_match.rm_eo - whole_match.rm_so;
memcpy(result
, sz
+ whole_match.
rm_so, len
); result[len] = 0;
printf("Match: %s\n", result
);
offset += whole_match.rm_eo + 1; // increase the starting offset
if (offset > length) {
break;
}
}
if (! match) {
printf("\"%s\" does not contain a match\n", sz
); }
}
int main(int argc, char* argv[]) {
int r;
regex_t p;
r = regcomp(&p, "[[:alnum:]]*k[[:alnum:]]*", 0);
if (r != 0) {
}
match_all(&p, "mikko mikko");
regfree(&p);
return 0;
}
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8cmVnZXguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCgp2b2lkIG1hdGNoX2FsbChyZWdleF90ICpwLCBjaGFyICpzeikgewogICAgcmVnbWF0Y2hfdCB3aG9sZV9tYXRjaDsKICAgIGludCBtYXRjaCA9IDA7CiAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oc3opOwogICAgY2hhciByZXN1bHRbQlVGU0laXTsKICAgIGludCBsZW47CgogICAgd2hpbGUgKHJlZ2V4ZWMocCwgc3ogKyBvZmZzZXQsIDEsICZ3aG9sZV9tYXRjaCwgMCkgPT0gMCkgewogICAgICAgIG1hdGNoID0gMTsKICAgICAgICBsZW4gPSB3aG9sZV9tYXRjaC5ybV9lbyAtIHdob2xlX21hdGNoLnJtX3NvOwogICAgICAgIG1lbWNweShyZXN1bHQsIHN6ICsgd2hvbGVfbWF0Y2gucm1fc28sIGxlbik7CiAgICAgICAgcmVzdWx0W2xlbl0gPSAwOwogICAgICAgIHByaW50ZigiTWF0Y2g6ICVzXG4iLCByZXN1bHQpOwoKICAgICAgICBvZmZzZXQgKz0gd2hvbGVfbWF0Y2gucm1fZW8gKyAxOyAvLyBpbmNyZWFzZSB0aGUgc3RhcnRpbmcgb2Zmc2V0CiAgICAgICAgaWYgKG9mZnNldCA+IGxlbmd0aCkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZiAoISBtYXRjaCkgewogICAgICAgIHByaW50ZigiXCIlc1wiIGRvZXMgbm90IGNvbnRhaW4gYSBtYXRjaFxuIiwgc3opOwogICAgfQp9CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgaW50IHI7CiAgICByZWdleF90IHA7CiAgICByID0gcmVnY29tcCgmcCwgIltbOmFsbnVtOl1dKmtbWzphbG51bTpdXSoiLCAwKTsKICAgIGlmIChyICE9IDApIHsKICAgICAgICBwcmludGYoInJlZ2NvbXAgZmFpbGVkXG4iKTsKICAgIH0KICAgIG1hdGNoX2FsbCgmcCwgIm1pa2tvIG1pa2tvIik7CiAgICByZWdmcmVlKCZwKTsKICAgIHJldHVybiAwOwp9