我想檢查日期字符串的格式爲yyyy-mm-dd格式。我打電話了regex_match功能,像這樣:正確使用regex_match
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
中所傳遞的字符串正是「1997年3月26日」當我使用正則表達式測試它拿起正則表達式。
我想這是與regex_match和我打電話給它的方式,但我不知道它還需要什麼。
我想檢查日期字符串的格式爲yyyy-mm-dd格式。我打電話了regex_match功能,像這樣:正確使用regex_match
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
中所傳遞的字符串正是「1997年3月26日」當我使用正則表達式測試它拿起正則表達式。
我想這是與regex_match和我打電話給它的方式,但我不知道它還需要什麼。
你應該寫這樣的:
"\\d{4}-\\d{2}-\\d{2}"
你需要雙\\
轉義反斜線。記住,你必須用C++來逃避它,然後然後正則表達式。
另外,不需要/
。
希望這會有所幫助!
這裏不應該有正則表達式分隔符(這些/
符號包含模式)。
此外,反斜槓必須在規則字符串一倍,但是,當你使用正則表達式的工作,最好是使用原始字符串字面量(原始字符串字面量通常與R"(
,然後幫助形成)"
包含序列,其中(
和)
也可以用一些其他分隔符替換)。
所以,你可以使用
#include<regex>
#include <iostream>
using namespace std;
int main() {
bool found = regex_match("1997-03-26",regex(R"(\d{4}-\d{2}-\d{2})"));
cout<<(found?"found":"not found");
return 0;
}
介意regex_match
需要整個字符串匹配!否則,對於部分匹配,請使用regex_search
。
你能解釋一下嗎?我實現了這一點,它沒有工作 –
我提供了一個完整的演示。請檢查並告訴我是否仍有不清楚的地方。 –
對於響應緩慢,我很抱歉,我在筆記本電腦上,它很不方便。 –
非常感謝! –
沒問題!如果這對您有用,請繼續並將其標記爲「接受的解決方案」。這樣,任何有此問題的人都可以輕鬆找到答案:) @KyleJensen – Spencer4134
不需要使用雙反斜槓 - 在處理正則表達式時,應該只使用原始字符串文字。 –