2013-07-11 36 views
-1

嗨,我正在學習正則表達式.. 我試圖做出以下conditon一個正則表達式表達:正則表達式1個字符和空格只

  1. 序列中的任何一個字母如下 - C-MPSTV-XZ條件它不應該重複。
  2. 此信可以在前面的一個空格或背面即,它可以是 「C」 或 「C」

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

我正在嘗試上面的表達式{1},期望只有一個字符,之後的空間只允許一個空格。在字符串結尾,我把{2}只得到2個字符。

我期待regex_match對於輸入「XX」是錯誤的,但它不起作用。

感謝您的幫助。

+1

如果我理解正確,你想匹配兩個字符序列,其中一個(但不是兩個)可以是空格,即'XX','X','X'但不是''(兩個空格),是那是正確的? – Alex1985

+0

嗨亞歷克斯你是正確的,但在同一時間我甚至不想要兩個字母。所以對於「X」,「X」匹配應該返回true,但對於「XX」「」則爲false。 –

+0

你想要什麼「X」 - 也是如此?另外,非重複字母如「XC」呢? – Alex1985

回答

2

\s?[C-MPSTV-XZ]\s?。如果您使用的是std::regex_match, ,則不需要其他任何內容,因爲regex_match要求 匹配整個字符串。

2

您發佈的正則表達式會匹配兩個不是空格的字符,因爲您要求字符類中有任何兩個字符。您還將接受{,1}作爲字符,因爲量詞充當字符類中的文字字符。

簡單的辦法是隻拼出兩個條件明確:

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

這是假設你的正則表達式引擎正則表達式爲顯著內治療的空白。如果沒有,或者如果您不喜歡,請用合適的轉義序列替換空格。

相關問題