Я хочу захватить названную подстроку с помощью библиотеки pcre ++.Именованная захваченная подстрока в pcre ++
Я знаю, что библиотека pcre имеет функциональность для этого, но pcre ++ не реализовал это.
Это была у меня сейчас (простой пример):
pcrepp::Pcre regex("test (?P<groupName>bla)");
if (regex.search("test bla"))
{
// Get matched group by name
int pos = pcre_get_stringnumber(
regex.get_pcre(),
"groupName"
);
if (pos == PCRE_ERROR_NOSUBSTRING) return;
// Get match
std::string temp = regex[pos - 1];
std::cout << "temp: " << temp << "\n";
}
Если я отладка, позы возврат 1, и это правильно, (? PBLA) является 1th submatch (0 целого совпадение). Это должно быть хорошо. Но ... regex.matches() return 0. Почему это: S?
КПП. Я использую regex [pos-1], потому что pcre ++ переиндексирует результат с 0, указывающим на первый подкачка, поэтому 1. Таким образом, 1 становится 0, 2 становится 1, 3 становится 2 и т. Д.
Кто-нибудь знает, как исправить это ?
Похоже, что pcre ++ больше проблем, чем того стоит: неполная библиотека, без релизов в ~ 6yrs, неудобная перегрузка оператора, хромое переопределение индексирования отправки ... Идите прямо с pcre или загрузите RE2 (http: // код Google). google.com/p/re2/) – Stephen