c++ Не работает Regex
Хочу получить все элементы и вывести их в текстовое поле, но Regex не работает. Регулярное выражение в html данные ищет если проверить на сайте
WebClient^ wb = gcnew WebClient();
String^ line = wb->DownloadString("https://www.google.com/search?q=c++")->ToString();
std::regex r("url?q=(.*?);");
string lineUrl = marshal_as<string>(line);
for (std::sregex_iterator i = std::sregex_iterator(lineUrl.begin(), lineUrl.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
String^ result = marshal_as<String^>(m.str() + "\n");
textBox2->AppendText(result);
}
Решение для C++\CLI
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
WebClient^ wb = gcnew WebClient();
String^ line = wb->DownloadString("https://www.google.com/search?q=c%2B%2B+cli&sxsrf=ALiCzsbGjwqdu8lXP9KlW63ZU4iPMwrQjw%3A1658238084175&ei=hLTWYo2bCtGRrgTzjIWIDQ&ved=0ahUKEwiN7dafioX5AhXRiIsKHXNGAdEQ4dUDCA4&uact=5&oq=c%2B%2B+cli&gs_lcp=Cgdnd3Mtd2l6EAMyBAgjECcyCggAEIAEEIcCEBQyCggAEIAEEIcCEBQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEOgcIABBHELADSgQIQRgASgQIRhgAULUDWNEKYM0WaAFwAXgAgAGNDIgB-ieSAQc2LTEuMi4xmAEAoAEByAECwAEB&sclient=gws-wiz")->ToString();
Regex^ regex = gcnew Regex("<div class=\"yuRUbf\"><a href=\"(.*?)\" data-ved");
Match^ match = regex->Match(line);
textBox2->AppendText(match->Groups[1]->Value + "\n"); // Вывод первого вхождения
for (Match^ match = regex->Match(line);
match->Success; match = match->NextMatch())
{
if (match->Value->Length > 0)
{
textBox2->AppendText(match->Groups[1]->Value + "\n");
}
}
}
В цикле выводим все значения
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
"url?q=(.*?);"
^------------ а экранировать кто будет?
^---- это тут вообще что забыло?
PS: И вообще, нафига использовать std::regex с .net'ными строками вместо .net'ных регулярок?