Регулярное выражение для многократного сопоставления одного и того же шаблона [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Регулярное выражение для многократного сопоставления одного и того же шаблона [дубликат]

Сообщение Anonymous »

У меня есть такой текст, который содержит пару списков, и каждая пара содержит список некоторых данных и связь этих данных с некоторыми другими данными:


{data={data1,data2},connection=data3}, {{data4},data5}, {{data6},data7}, ...


Мне нужно извлечь данные из каждой пары, т. е. мне нужны данные1, данные2, данные3 и т. д.
Это регулярное выражение, которое я придумал:

Код: Выделить всё

(\{(?:\S*=)?\{\S+\})(?:,(?:\S*=)?\}\S+)?
regex101.com сопоставляет шаблон с текстом и разделяет строку на следующие группы:

Код: Выделить всё

{data={data1,data2},connection=data3}
, {{data4},data5}, {{data6},data7} (для каждого из них мне нужно будет запустить другое регулярное выражение). Однако мой C++ не соответствует строке:

Код: Выделить всё

#include 
#include 
#include 

int main()
{
std::string text{ "{data={data1,data2},connection=data3}, {{data4},data5}, {{data6},data7}" };

const std::regex rx{ R"data((\{\S*\{\S+\})(?:,(\S*=)?\}\S+)?)data" };
std::smatch matches;
if (std::regex_match(text, matches, rx))
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/54446021/regex-to-match-the-same-pattern-many-times[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»