-1

嗨,我正在学习正则表达式。我试图为以下条件制作一个正则表达式:

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

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

我正在尝试上面的表达式 {1} 只需要一个字符,之后只允许一个空格。在字符串的末尾,我放了 {2} 以仅获得 2 个字符。

我期待 regex_match 对于输入“XX”是错误的,但它不起作用。

感谢你的帮助。

4

2 回答 2

2

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

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

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

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

于 2013-07-11T09:08:46.913 回答
2

\s?[C-MPSTV-XZ]\s?. 如果您正在使用std::regex_match,则不需要其他任何内容,因为regex_match需要匹配整个字符串。

于 2013-07-11T09:08:11.313 回答