我試圖做一時間有些輸入驗證格式複雜regex_match不工作在C++
"1:00 to 12:59 and AM/PM"
我創造了這個正則表達式:\b((1[0-2]|0?[1-9]):([0-5][0-9]) *([AaPp][Mm]))
。 我在regexr.com上測試過它,它工作正常。
然而,當我嘗試做這樣的事情:
std::string s ("1:00 AM");
std::regex e ("\b((1[0-2]|0?[1-9]):([0-5][0-9]) *([AaPp][Mm]))");
if (std::regex_match (s,e))
std::cout << "string object matched\n";
它永遠不會奏效。任何想法我可能做錯了什麼?
這個怎麼樣? '([0-1]?[0-2]:[0-5] [0-9] \ s * [AaPp] [mm])' – MYGz
不起作用。不知道爲什麼。雖然你的正則表達式在regexr.com上工作正常!這可能與轉義字符有關嗎?原因在於 \你必須用 \\ s來逃脫它嗎? –
感謝@MYGz,它只是通過將\ s *改爲空格*而工作。也許它與字符串中的轉義字符有關。 –