Регулярное выражение с использованием C ++ - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу создать регулярное выражение, которое будет содержать только входную строку [G | y | M | d | D | F | E | h | H | m | s | S | w | W | a |z | Z], поэтому я придумаю некоторый код снизу:

std::regex Reg = regex("[G|y|M|d|D|F|E|h|H|m|s|S|w|W|a|z|Z]");

Моя проблема в том, что мое регулярное выражение все еще неверно, потому что моя входная строка может содержать другие символы с символами в вышеуказанной группе, такие как:

std::string myInputString = Gx //correct

Что Gx должно быть не так

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Я не пользователь regex lib в C ++, но я понимаю, что он поддерживает синтаксис ECMAScript. Так что я не думаю, что вам нужны символы трубы. Синтаксис «любой символ в наборе» [] не использует каналы. Во-вторых, если вы хотите сопоставить всю входную строку (вместо какой-либо ее части), вам нужно использовать ^ и $ anchors

Try:

std::regex( "^[GyMdDFEhHmsSwWazZ]+$" );
0 голосов
/ 06 ноября 2019

Что я могу понять из вашего вопроса, так это то, что вы хотите ввести строку только с этими выбранными символами

Регулярное выражение верно, насколько мне известно

, но вам нужно сравнить строкуchar за char, потому что, если вы этого не сделаете, вы можете получить такие же результаты, как сейчас ...

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