使用C ++的正则表达式

我想创建一个正则表达式,仅将输入字符串包含[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必须错了

ygzboy 回答:使用C ++的正则表达式

我不是C ++的正则表达式库的用户,但我知道它支持ECMAScript语法。因此,我认为您不需要管道字符。 “集合中的任何字符” []语法不使用管道。其次,如果要匹配整个输入字符串(而不是其中的任何部分),则需要使用^和$锚点

尝试:

std::regex( "^[GyMdDFEhHmsSwWazZ]+$" );
,

我从您的问题中可以理解的是,您只想输入带有所选字符的字符串

据我所知,正则表达式是正确的

但是您需要按char比较字符串char,因为如果不这样做,您可能会得到类似的结果,就像现在得到的...

本文链接:https://www.f2er.com/3155029.html

大家都在问