Есть функция для использования сопоставления с образцом (с помощью регулярных выражений) в C ++? - PullRequest
2 голосов
/ 01 декабря 2008

Есть простой метод C ++ для использования сопоставления с образцом в строках? Код должен звучать так:

if (regexpcmp("l?nole*[0-9]", "linoleum1")) {
  //we have a match!
} else {
   //no match 
}

Ответы [ 4 ]

11 голосов
/ 01 декабря 2008

Вы уже смотрели на Boost.Regex ?

const boost::regex e("l?nole*[0-9]");
if (regex_match("linoleum1", e)) {
  //we have a match!
} else {
  //no match 
}
3 голосов
/ 01 декабря 2008

Возьми boost.regex друг. если вам не разрешено использовать boost (к сожалению, до сих пор это делают компании), вы можете заглянуть в pcrecpp, привязку C ++, разработанную google для знаменитой библиотеки PCRE .

3 голосов
/ 01 декабря 2008

Не на базовом языке. Используйте Boost.Regex или внешнюю библиотеку, например pcre. В среде Unix вы почти наверняка имеете доступ к инструментам регулярных выражений BSD (regcomp, regerror, regexec, regfree), которые похожи на c, а не на c ++, но работают.

0 голосов
/ 01 декабря 2008

Стандартная библиотека регулярных выражений (основанная на boost :: regex) доступна в пространстве имен TR1, если вы используете последние версии наиболее часто используемых компиляторов: std :: tr1 :: regex.

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