EvgenyProff
@EvgenyProff
Не знаю, как пользоваться Google

Как я могу преобразовать строковую переменную в регулярное выражение?

#include <algorithm>
#include <iostream>
#include <math.h>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <map>
#include <tuple>
#include <set>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <cstdio>
#include <regex>



using namespace std;



int main() {
	string word, mask;
	cin >> word >> mask;

	for (size_t i = 0; i < mask.size(); ++i) {

		if (mask[i] == '?') {	
			mask[i] = '.';
		}

		if (mask[i] == '*') {	
			mask[i] = '.';
			mask.insert(i + 1, "*");
		}
	}

	mask += "$";

	regex reg = mask;                                                                 //Вот здесь ошибка

	regex_match(word, reg) ? cout << "YES" : cout << "NO";





	system("pause");
}
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
может быть так:
regex reg(mask);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EvgenyProff
@EvgenyProff Автор вопроса
Не знаю, как пользоваться Google
string word, mask;
	cin >> word >> mask;

	for (size_t i = 0; i < mask.size(); ++i) {

		if (mask[i] == '?') {	
			mask[i] = '.';
		}

		if (mask[i] == '*') {	
			mask[i] = '.';
			mask.insert(i + 1, "*");
		}
	}

	mask += "$";
	char *regular = new char[mask.size()];

	for (int i = 0; i < mask.size(); ++i) {
		regular[i] = mask[i];
	}

	regex reg = (regular);

	regex_match(word, reg) ? cout << "YES" : cout << "NO";


так тоже не рабит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы