fork(1) download
  1. #include<iostream>
  2. #include <regex>
  3.  
  4. void DescriptionRegexError(const std::regex_error& e);
  5.  
  6. int main(int argc, char **argv)
  7. {
  8. (void)argc; (void)argv;
  9.  
  10.  
  11. try {
  12. std::regex nameRegex("^[a-zA-Z][[:word:]]+");
  13. try {
  14. const auto r = std::regex_match("someDefaultName", nameRegex);
  15. }
  16. catch (const std::regex_error& e) {
  17. std::cout<<"invalid: const auto r = std::regex_match(\"someDefaultName\", nameRegex);\n";
  18. DescriptionRegexError(e);
  19. }
  20.  
  21. }
  22. catch (const std::regex_error& e) {
  23. std::cout<<"invalid: std::regex nameRegex(\"^[a-zA-Z][[:word:]]+\");\n";
  24. DescriptionRegexError(e);
  25. }
  26.  
  27. std::cout<<"-----------------------\n";
  28. }
  29.  
  30. void DescriptionRegexError(const std::regex_error& e)
  31. {
  32. //std::cout << "regex_error caught: " << e.what() << '\n';
  33. //std::cout<< e.code() << '\n';
  34.  
  35. if(e.code()==std::regex_constants::error_collate)
  36. std::cout << "the expression contains an invalid collating element name\n";
  37. else if(e.code()==std::regex_constants::error_ctype)
  38. std::cout << "the expression contains an invalid character class name\n";
  39. else if(e.code()==std::regex_constants::error_escape)
  40. std::cout << "the expression contains an invalid escaped character or a trailing escape\n";
  41. else if(e.code()==std::regex_constants::error_backref)
  42. std::cout << "the expression contains an invalid back reference\n";
  43. else if(e.code()==std::regex_constants::error_brack)
  44. std::cout << "the expression contains mismatched square brackets ('[' and ']')\n";
  45. else if(e.code()==std::regex_constants::error_paren)
  46. std::cout << "the expression contains mismatched parentheses ('(' and ')')\n";
  47. else if(e.code()==std::regex_constants::error_brace)
  48. std::cout << "the expression contains mismatched curly braces ('{' and '}')\n";
  49. else if(e.code()==std::regex_constants::error_badbrace)
  50. std::cout << "the expression contains an invalid range in a {} expression\n";
  51. else if(e.code()==std::regex_constants::error_space)
  52. std::cout << "there was not enough memory to convert the expression into a finite state machine\n";
  53. else if(e.code()==std::regex_constants::error_badrepeat)
  54. std::cout << "one of *?+{ was not preceded by a valid regular expression\n";
  55. else if(e.code()==std::regex_constants::error_complexity)
  56. std::cout << "the complexity of an attempted match exceeded a predefined level\n";
  57. else if(e.code()==std::regex_constants::error_stack)
  58. std::cout << "there was not enough memory to perform a match\n";
  59.  
  60. #ifdef _MSC_VER //microsoft specific
  61. else if(e.code()==std::regex_constants::error_parse)
  62. std::cout << "error_parse\n";
  63. else if(e.code()==std::regex_constants::error_syntax)
  64. std::cout << "error_syntax\n";
  65. #endif
  66. }
  67.  
  68.  
  69.  
  70.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
invalid: std::regex nameRegex("^[a-zA-Z][[:word:]]+");
the expression contains mismatched square brackets ('[' and ']')
-----------------------