這個問題在這里已經有了答案: 這個正則運算式在 C 中不起作用 1 個答案 17 小時前關閉。
我想使用正則運算式標頭中的 regex_match() 使用正則運算式檢查版本號,例如 1.13.1 、 1.22.34 、 4.12.3 等。
我正在這樣做
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main () {
if (regex_match ("1.14.1", regex("\d .\d .\d ") ))
{
cout << "string:literal => matched\n";
}
return 0;
}
但我沒有得到它匹配?看來正則運算式是正確的
uj5u.com熱心網友回復:
反斜杠 ( \
) 轉義文字中的下一個const char
字符。
也就是說,您的轉義序列\d
無法正確識別為正則運算式匹配模式,因為它需要 a\
本身。反斜杠可以在這些文字中表示,通過轉義自身:\\
或使用原始字串文字(請參閱第二個選項)。
regex("\d .\d .\d ")
應該
regex("\\d .\\d .\\d ")
或者
regex(R"(\d .\d .\d )")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519973.html
標籤:C 正则表达式c 11