Я хочу найти строки из файла, который соответствует определенным условиям. Я знаю размер строки и некоторую позицию символа. Так что, насколько мне известно, лучшее возможное решение - создать регулярное выражение и найти строку в файле.
Я создал приведенное ниже регулярное выражение, которое ищет все возможные символы:
[a-zA-Z0-9#&()\.\-/=?%@!\^\$\\ \.\*\+\?\(\)\[\]\{\}\|]
ниже кода, который я написал с использованием приведенного выше регулярного выражения:
int main()
{
std::ifstream t("file.txt");
std::string str((std::istreambuf_iterator<char(t)),std::istreambuf_iterator<char>());
smatch m;
string allchar = "[a-zA-Z0-9#&()\.\-/=?%@!\^\$\\ \.\*\+\?\(\)\[\]\{\}\|]";
//String of size five, have S at 0th index and B at last index
string search = "S"+ allchar + allchar + allchar +"B";
regex r(search);
regex_search(str, m, r);
for (auto x : m)
{
cout << x << endl;
}
}
Но используяКод выше я не получаю правильные ответы, которые я должен получить. Я думаю, что делаю какую-то ошибку, создавая всю строку символов, но не могу определить свою ошибку.