嗨,我正在学习正则表达式。我试图为以下条件制作一个正则表达式:
- 下面给出的序列中的任何字母 - C-MPSTV-XZ 条件是它不应重复。
这个字母前后可以有一个空格,即可以是“C”或“C”
[C-MPSTV-XZ{1} ]{2}
我正在尝试上面的表达式 {1} 只需要一个字符,之后只允许一个空格。在字符串的末尾,我放了 {2} 以仅获得 2 个字符。
我期待 regex_match 对于输入“XX”是错误的,但它不起作用。
感谢你的帮助。
您发布的正则表达式将匹配两个都不是空格的字符,因为您从字符类中要求任何两个字符。您还将接受{
,1
和}
as characters 因为量词在字符类中充当文字字符。
简单的替代方法是明确说明这两个条件:
( [C-MPRSTV-XZ]|[C-MPRSTV-XZ] )
这假设您的正则表达式引擎将正则表达式中的空白视为重要。如果不是,或者您不喜欢这样,请用合适的转义序列替换空格。
\s?[C-MPSTV-XZ]\s?
. 如果您正在使用std::regex_match
,则不需要其他任何内容,因为regex_match
需要匹配整个字符串。