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

时间:2013-07-11 08:54:15

标签: c++ regex

您好我正在学习正则表达式..   我试图为跟随条件制作一个正则表达式:

  1. 以下给出的序列中的任何字母 - C-MPSTV-XZ条件是不应重复。
  2. 这封信的正面或背面可以有一个空格,即它可以是“C”或“C”

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

  3. 我正在尝试上面的表达式{1}只预期一个字符和空格之后只允许一个空格。在字符串的末尾,我把{2}只得到2个字符。

    我希望输入“XX”的regex_match为false,但它不起作用。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

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

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