fork(1) download
  1. #include <regex.h>
  2. #include <stdio.h>
  3.  
  4. int checkregex(char *in){
  5. regex_t regex;
  6. char *expression="^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$";
  7. int reti;
  8. char msgbuf[100];
  9.  
  10. /* Compile regular expression */
  11. reti = regcomp(&regex, expression, REG_EXTENDED);
  12. if (reti) {
  13. fprintf(stderr, "Could not compile regex\n");
  14. return -1;
  15. }
  16.  
  17. /* Execute regular expression */
  18. reti = regexec(&regex, in , 0, NULL, 0);
  19. if (!reti) {
  20. printf("Match\n");
  21. return 1;
  22. }
  23. else if (reti == REG_NOMATCH) {
  24. printf("No match\n");
  25. return 0;
  26. }
  27. else {
  28. regerror(reti, &regex, msgbuf, sizeof(msgbuf));
  29. fprintf(stderr, "Regex match failed: %s\n", msgbuf);
  30. exit(1);
  31. }
  32. return 0;
  33. }
  34.  
  35. int main(void) {
  36. int x = checkregex("XII");
  37. printf("%d\n", x);
  38. return 0;
  39. }
Success #stdin #stdout 0s 2288KB
stdin
1
2
10
42
11
stdout
Match
1