Получить из текста подстроку, соответствующую шаблону.


Вызов:

bool str_regex_substr(string source, string code, string usSubstrRes, string usPrefix, string usSuffix);


Здесь:

source - строковая переменная с текстом, из которого требуется получить текст, соответствующий шаблону;

code - шаблон;

usSubstrRes - реальный фрагмент из текста, соответствующая шаблону;

usPrefix - строка, предшествующая фрагменту текста;

usSuffix - строка за фрагментом до конца текста;


Возвращает true - если текст, соответствующий шаблону найден.


Пример: получить из текста ширину и высоту дверного блока


string s = "Дверной блок из алюминиевых профилей (BxH): 1400x2100 мм"; // исходный текст
string usSubstrRes, usPrefix, usSuffix;
string code = "\\(BxH\\)\\: \\d{1,}x.*\\d{1,}";  // шаблон означает: текст, у которого (BxH): "одна или несколько цифр" x "одна или несколько цифр"
bool b = str_regex_substr(s, code, usSubstrRes, usPrefix, usSuffix);
if (b)
{
   coutvar << usSubstrRes; // в окно сообщений будет выведено "(BxH): 1400x2100 мм"
   code = "\\d{1,}"; // шаблон означает: текст, у которого "одна или несколько цифр"
   b = str_regex_substr(usSubstrRes, code, usSubstrRes, usPrefix, usSuffix);
   coutvar << usSubstrRes; // в окно сообщений будет выведено "1400" 
   if (b)
   {
      code = "\\d{1,}"; // шаблон означает: текст, у которого "одна или несколько цифр"
      // для поиска второго числа используем суффикс от прошлого поиска
      b = str_regex_substr(usSuffix, code, usSubstrRes, usPrefix, usSuffix);
      coutvar << usSubstrRes; // будет выведено "2100"
   }
}