C++ 仅限正则表达式1字符和空格

C++ 仅限正则表达式1字符和空格,c++,regex,C++,Regex,嗨,我在学regex。。 我试图为以下条件创建正则表达式: 下面给出的顺序中的任何字母-C-MPSTV-XZ条件是不应重复。 这封信的前后可以有一个空格 [C-MPSTV-XZ{1}]{2} 我正在尝试上面的表达式{1}只需要一个字符,后面的空格只允许一个空格。在字符串的末尾,我把{2}放进去,只得到2个字符 我希望输入XX的regex_匹配为false,但它不起作用 感谢您的帮助。\s?[C-MPSTV-XZ]\s?。如果您使用的是std::regex_match, 您不需要任何其他东西,因为

嗨,我在学regex。。 我试图为以下条件创建正则表达式:

下面给出的顺序中的任何字母-C-MPSTV-XZ条件是不应重复。 这封信的前后可以有一个空格

[C-MPSTV-XZ{1}]{2}

我正在尝试上面的表达式{1}只需要一个字符,后面的空格只允许一个空格。在字符串的末尾,我把{2}放进去,只得到2个字符

我希望输入XX的regex_匹配为false,但它不起作用

感谢您的帮助。

\s?[C-MPSTV-XZ]\s?。如果您使用的是std::regex_match, 您不需要任何其他东西,因为正则表达式匹配需要
整个字符串上的匹配。

您发布的正则表达式将匹配两个字符,这两个字符都不是空格,因为您在字符类中请求任意两个字符。您还将接受{,1和}作为字符,因为量词在字符类中充当文字字符

简单的替代方法是明确说明两个条件:

( [C-MPRSTV-XZ]|[C-MPRSTV-XZ] )

这假设您的正则表达式引擎将正则表达式中的空格视为重要空格。如果不是,或者如果您不喜欢,请用合适的转义序列替换空格。

如果我理解正确,您希望匹配两个字符序列,其中一个但不是两个都可以是空格,即“XX”、“X”、“X”但不是“两个空格”,对吗?嗨,Alex,您是正确的,但同时我不想要两个字母。因此,对于-X,匹配应该返回true,但是对于XX,匹配应该返回false。那么对于X,您希望得到什么?同样为true?还有,像XC这样的不重复的字母呢?@Alex1985-谢谢你的时间。如果我只提供匹配一个字母的条件,我只需要一个字母。那么XC应该是false。