Как извлечь строки из строки C ++ с помощью регулярных выражений - PullRequest
1 голос
/ 04 мая 2011

Я использую регулярное выражение с помощью #include <regex.h> Если у меня есть строка s, как я могу использовать регулярное выражение для поиска шаблона p?

Ответы [ 2 ]

4 голосов
/ 04 мая 2011
#include <regex.h>
#include <iostream>
#include <string>

std::string
match(const char *string, char *pattern)
{

// Adapted from:
   http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html

    int    status;
    regex_t    re;
    regmatch_t rm;


    if (regcomp(&re, pattern, REG_EXTENDED) != 0) {
        return "Bad pattern";
    }
    status = regexec(&re, string, 1, &rm, 0);
    regfree(&re);
    if (status != 0) {
        return "No Match";
    }
    return std::string(string+rm.rm_so, string+rm.rm_eo);
}

int main(int ac, char **av) {
    // e.g. usage: ./program abcdefg 'c.*f'
    std::cout << match(av[1], av[2]) << "\n";
}
1 голос
/ 04 мая 2011

Проверка http://msdn.microsoft.com/en-us/library/bb982821.aspx, имеет подробный шаблон использования регулярных выражений. из блога MS vc.

      const regex r("[1-9]\\d*x[1-9]\\d*");

      for (string s; getline(cin, s); ) {
               cout << (regex_match(s, r) ? "Yes" : "No") << endl;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...