// regex構造,賦值,重新初始化
string partten1;
regex r1(partten1);
regex r2;
r2 = r1;
r1.assign(r2);
auto subexprnum = r1.mark_count(); // 子表示式的數量
// 應用例項1
string str1;
smatch res1;
if(regex_search(str1, res1, r1))
// 應用例項2
// regex r3("[[:alnum:]]+\\.(cpp|cxx|c)");
// regex r3("[[:alnum:]]+\\.(cpp|cxx|c)$");
regex r3("[[:alnum:]]+[.](cpp|cxx|c)");
smatch res2;
string str2 = "regextest.cpp";
if(regex_match(str2, res2, r3))
// regex構造錯誤
try catch (regex_error e)
// 正規表示式和輸入序列匹配
cmatch res3;
if(regex_match("myfile.cpp", res3, r3))
// 匹配與regex迭代器
string partten1;
regex r1(partten1);
string str1;
for(sregex_iterator iter(str1.begin(), str1.end(), r1), iterend;iter != iterend; iter++)
bool valid(const smatch& m) else
}
// 子表示式
regex r1("([[:alnum:]]+)[.](cpp|cxx|c)");
smatch res1;
string str1 = "file.cpp";
if(regex_match(str1, res1, r1))
// 子表示式綜合例子,美國**號碼匹配
regex r2("(\\()?(\\d)(\\))?([. -])?(\\d)([. -])?(\\d)");
vectornumsvec;
for(string& str : numsvec)
}}
string fmt("$2.$5.$7");
string strline = "lilei 028-111.2222 (028) 333 4444 0285556666";
cout << regex_replace(strline, r2, fmt) << endl;
cout << regex_replace(strline, r2, fmt, regex_constants::format_no_copy) << endl;
string res;
regex_replace(back_inserter(res), strline.begin(), strline.end(), r2, fmt);
cout << res << endl;
參考
c++ primer中文版 第五版 第17章
c regex 正規表示式使用
include include include include intmain std regex word regex s auto words begin std sregex iterator s.begin s.end word regex auto words end std sregex...
C Regex類的用法
一 在c 中,要使用正規表示式類,請在原始檔開頭處新增以下語句 using system.text.regularexpressions 二 regex類常用的方法 1 靜態match方法 使用靜態match方法,可以得到源中第乙個匹配模式的連續子串。靜態的match方法有2個過載,分別是 rege...
C regex正規表示式
正規表示式在標頭檔案中定義,是標準庫中的乙個強大工具。正規表示式是一種用於字串處理的微型語言。儘管一開始看上去比較複雜,但一旦了解這種語言,字串的處理就會簡單得多。正規表示式適用於一些與字串相關的操作。ecmascript c 包含對幾種語法的支援,預設語法是ecmascript。錨點 萬用字元 替...