📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == C++において、正規表現はテキストパターンのマッチング、検索、置換等を行うための強力なツールである。<br> C++ 11以降では、標準ライブラリとして<regex>ヘッダが導入されており、正規表現の機能が言語に組み込まれた。<br> <br> これにより、外部ライブラリに頼ることなく正規表現を扱うことができる。<br> <br> 基本的な使用方法としては…」
 
58行目: 58行目:
     catch (const std::exception &e) {
     catch (const std::exception &e) {
       std::cerr << "Main function error: " << e.what() << '\n';
       std::cerr << "Main function error: " << e.what() << '\n';
      return -1;
    }
    return 0;
}
</syntaxhighlight>
<br><br>
== 正規表現の使用例 : 電話番号 ==
以下の例では、国内の一般的な電話番号形式に対応するパターンを使用している。<br>
<br>
<syntaxhighlight lang="c++">
#include <iostream>
#include <regex>
#include <string>
void phoneNumberFormat()
{
    try {
      std::string phone = "090-1234-5678";
      std::regex pattern(R"(\d{2,4}-\d{2,4}-\d{4})");
      std::smatch matches;
      if (std::regex_match(phone, matches, pattern)) {
          std::cout << "Valid phone number" << std::endl ;
          for (const auto &match : matches) {
            std::cout << match << std::endl;
          }
      }
    }
    catch (const std::regex_error &e) {
      std::cerr << "Regex error: " << e.what() << std::endl;
      std::cerr << "Code: " << e.code() << std::endl;
      switch (e.code()) {
          case std::regex_constants::error_collate:
            std::cerr << "Invalid collation element request" << std::endl;
            break;
          case std::regex_constants::error_ctype:
            std::cerr << "Invalid character class" << std::endl;
            break;
          case std::regex_constants::error_escape:
            std::cerr << "Invalid escape character or trailing escape" << std::endl;
            break;
          case std::regex_constants::error_backref:
            std::cerr << "Invalid back reference" << std::endl;
            break;
          case std::regex_constants::error_brack:
            std::cerr << "Mismatched brackets" << std::endl;
            break;
          case std::regex_constants::error_paren:
            std::cerr << "Mismatched parentheses" << std::endl;
            break;
          case std::regex_constants::error_brace:
            std::cerr << "Mismatched braces" << std::endl;
            break;
          case std::regex_constants::error_badbrace:
            std::cerr << "Invalid range inside braces" << std::endl;
            break;
          case std::regex_constants::error_range:
            std::cerr << "Invalid character range" << std::endl;
            break;
          case std::regex_constants::error_space:
            std::cerr << "Insufficient memory" << std::endl;
            break;
          case std::regex_constants::error_badrepeat:
            std::cerr << "Invalid repeat expression" << std::endl;
            break;
          case std::regex_constants::error_complexity:
            std::cerr << "Operation too complex" << std::endl;
            break;
          case std::regex_constants::error_stack:
            std::cerr << "Stack space overflow" << std::endl;
            break;
          default:
            std::cerr << "Unknown regex error" << std::endl;
            break;
      }
    }
    catch (const std::exception &e) {
      std::cerr << "Error: " << e.what() << std::endl;
    }
}
int main()
{
    try {
      phoneNumberFormat();
    }
    catch (const std::exception &e) {
      std::cerr << "Main function error: " << e.what() << std::endl;
       return -1;
       return -1;
     }
     }