увеличить соответствие подстроки регулярное выражение - PullRequest
4 голосов
/ 14 января 2010

Я хочу вернуть вывод «match», если шаблон «normal» является подстрокой переменной st. Возможно ли это?

int main()
{
  string st = "some regular expressions are Regxyzr";

  boost::regex ex("[Rr]egular");
  if (boost::regex_match(st, ex)) 
  {
    cout << "match" << endl;
  }
  else 
  {
    cout << "not match" << endl;
  }
}

Ответы [ 3 ]

15 голосов
/ 14 января 2010

Boost :: regex_match соответствует только всей строке, вы, вероятно, хотите вместо этого повысить boost :: regex_search.

7 голосов
/ 14 января 2010

regex_search делает то, что вы хотите; regex_match задокументировано как

определяет, является ли данный регулярный выражение соответствует всем данного последовательность символов

(ударение в оригинальном URL, с которого я цитирую).

0 голосов
/ 14 января 2010

На ваш вопрос дан пример с документацией библиотеки - boost :: regex

Альтернативный подход:

Вы можете использовать boost :: regex_iterator, это полезно для разбора файла и т. Д.

string[0], 
string[1] 

ниже указывает на начало и конец итератора.

Ex:

boost::regex_iterator stIter(string[0], string[end], regExpression)
boost::regex_iterator endIter

for (stIter; stIter != endIter; ++stIter)
{
   cout << " Whole string " << (*stIter)[0] << endl;
   cout << " First sub-group " << (*stIter)[1] << endl;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...