正規表示式是乙個非常強大的工具,主要用於字串匹配。如何在c++中使用正規表示式?下面就簡要介紹一下c++中正規表示式相關函式的用法。
本篇部落格中所涉及到的函式及其功能如下表所示:
函式功能
regex_match(s,re)
目標字串s和正規表示式re是否完全匹配
regex_search(s,match_result,re)
目標字串s是否存在某個子串與正規表示式re匹配
regex_replace(s,re,s1)
用s1替換目標字串s中與正規表示式re匹配的子串
稍微詳細一點再囉嗦兩句:
上面說的一大堆基本沒什麼用,建議將示例**粘去跑一跑,改一改,再跑一跑。這裡推薦乙個特別好用的**:能看見你的表示式在目標字串中的匹配情況,對於正規表示式查錯非常有用。點我
以下**稍微在原作者基礎上改了改,自己跑一跑體驗下:
#include #include #include using namespace std;
void regex_match_test() ", // 花括號,匹配前面字元至少 n 次,但是不超過 m 次。
"(ccaatt)", //(xyz) 字元組,按照確切的順序匹配字元xyz。
"(c(h|d|f)aatt)|(ccaatt)", // | 分支結構,匹配符號之前的字元或後面的字元。
// \ 轉義符,它可以還原元字元原來的含義,允許你匹配保留字元 [ ] ( ) . * + ? ^ $ \ |
"^ccaatt", // ^ 匹配行的開始
"ccaatt$" // $ 匹配行的結束
}; for (int i = 0; i < patterns.size(); i++)
regs.push_back(regex(patterns[i]));
for (int i = 0; i < regs.size(); i++)
}void regex_search_test() ;
regex color_regex("#[a-f0-9]""[a-f0-9]""[a-f0-9]");
// 簡單匹配
for (const auto& line : lines)
std::cout << '\n';
// 展示每個匹配中有標記子表示式的內容
smatch color_match;
for (const auto& line : lines)
} // 重複搜尋(參閱 std::regex_iterator )
std::string log(r"( \
speed: 366 \
mass: 35 \
speed: 378 \
mass: 32 \
speed: 400 \
mass: 30)");
regex r(r"(speed:\t\d*)");
smatch sm;
while (regex_search(log, sm, r))
cmatch cm;
// c 風格字串演示
if (regex_search("this is a test", cm, regex("test")))
cout << "\nfound " << cm[0] << " at position " << cm.prefix().length() << endl;
}void regex_replace_test() } for brown fox", replace_result;
std::regex double_brace("(\\\\})");
//regex_replace返回值即為替換後的字串
replace_result = regex_replace(text, double_brace, "*");
cout << replace_result << "\n";
//構造存有結果的字串,[$&]即為用將匹配成功部分括起來
// $& inserts the matched substring.
cout << regex_replace(text, double_brace, "[$&]") << '\n';
// $i則輸出double_brace中第i個括號匹配到的值
cout << regex_replace(text, double_brace, "$1") << '\n';
cout << regex_replace(text, double_brace, "[$2]") << '\n';
cout << regex_replace(text, double_brace, "$3") << '\n';
}int main()
c 正規表示式 基礎操作
c 正規表示式 基礎操作 philpanic9 2019 03 04 21 50 43 13462 收藏 30 展開正規表示式是乙個非常強大的工具,主要用於字串匹配。如何在c 中使用正規表示式?下面就簡要介紹一下c 中正規表示式相關函式的用法。本篇部落格中所涉及到的函式及其功能如下表所示 函式 功能...
C 正規表示式基礎
正規表示式 可以利用數學演算法解決計算機中的文字檢索和匹配問題 是一種專門用於字串處理的語言 檢索 從字串中獲取我們想要的部分 匹配 判斷給定的字串是否符合正規表示式的過濾邏輯 定位字元 string ss i am blue cat string newstr regex.replace ss,開...
正規表示式 1 正規表示式基礎
1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...