#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
#define STRING "Abcde19:36zxc. Aasd 01:12 yyy. Qqq 24:45=0.53. Takie dela. 11:17 00:00, odnako." // пример строки
#define PATTERN "(([0-1][0-9])|(2[0-3])):([0-5][0-9])" // регулярное выражение для времени
int main() {
char * s = STRING;
regex_t
* preg
= (regex_t
*)malloc(sizeof(regex_t
)); regcomp(preg, PATTERN, REG_EXTENDED);
int nmatch = 16; // я так полагаю, это максимальное число ищущихся совпадений
regmatch_t
* pmatch
= (regmatch_t
*)malloc(nmatch
* sizeof(regmatch_t
)); regexec(preg, s, nmatch, pmatch, 0);
for (int i = 0; i < nmatch; ++i) {
for (int j = pmatch[i].rm_so; j < pmatch[i].rm_eo; ++j) {
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxyZWdleC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgojZGVmaW5lIFNUUklORyAiQWJjZGUxOTozNnp4Yy4gQWFzZCAwMToxMiB5eXkuIFFxcSAyNDo0NT0wLjUzLiBUYWtpZSBkZWxhLiAxMToxNyAwMDowMCwgb2RuYWtvLiIgLy8g0L/RgNC40LzQtdGAINGB0YLRgNC+0LrQuAojZGVmaW5lIFBBVFRFUk4gIigoWzAtMV1bMC05XSl8KDJbMC0zXSkpOihbMC01XVswLTldKSIgLy8g0YDQtdCz0YPQu9GP0YDQvdC+0LUg0LLRi9GA0LDQttC10L3QuNC1INC00LvRjyDQstGA0LXQvNC10L3QuAoKaW50IG1haW4oKSB7CgljaGFyICogcyA9IFNUUklORzsKCXJlZ2V4X3QgKiBwcmVnID0gKHJlZ2V4X3QqKW1hbGxvYyhzaXplb2YocmVnZXhfdCkpOwoJcmVnY29tcChwcmVnLCBQQVRURVJOLCBSRUdfRVhURU5ERUQpOwoKCWludCBubWF0Y2ggPSAxNjsgLy8g0Y8g0YLQsNC6INC/0L7Qu9Cw0LPQsNGOLCDRjdGC0L4g0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INGH0LjRgdC70L4g0LjRidGD0YnQuNGF0YHRjyDRgdC+0LLQv9Cw0LTQtdC90LjQuQoJcmVnbWF0Y2hfdCAqIHBtYXRjaCA9IChyZWdtYXRjaF90ICopbWFsbG9jKG5tYXRjaCAqIHNpemVvZihyZWdtYXRjaF90KSk7CglyZWdleGVjKHByZWcsIHMsIG5tYXRjaCwgcG1hdGNoLCAwKTsKCglmb3IgKGludCBpID0gMDsgaSA8IG5tYXRjaDsgKytpKSB7CgkJZm9yIChpbnQgaiA9IHBtYXRjaFtpXS5ybV9zbzsgaiA8IHBtYXRjaFtpXS5ybV9lbzsgKytqKSB7CgkJCXByaW50ZigiJWMiLCBzW2pdKTsKCQl9CgkJcHJpbnRmKCJcbiIpOwoJfQp9Cg==