How to extract all the substrings between single quotation marks in C++

1 Answer

0 votes
#include <iostream>
#include <string>
#include <vector>
#include <regex>

std::vector<std::string> extract_substrings(const std::string& text) {
    // Regular expression pattern to find substrings between single quotation marks
    std::regex pattern("'(.*?)'");
    std::sregex_iterator it(text.begin(), text.end(), pattern);
    std::sregex_iterator end;

    std::vector<std::string> substrings;
    while (it != end) {
        substrings.push_back(it->str(1)); // Capture group 1
        ++it;
    }

    if (substrings.empty()) {
        return {};
    }

    return substrings;
}

int main() {
    std::string s = "C++ 'cpp' is a 'general-purpose' programming language '.h' 'hpp'";
    std::vector<std::string> substrings = extract_substrings(s);

    for (const auto& str : substrings) {
        std::cout << str << std::endl;
    }
}

  
/*
run:
  
cpp
general-purpose
.h
hpp
  
*/

 



answered Feb 12, 2025 by avibootz
...