C regex使用基礎

2021-10-23 15:59:30 字數 1749 閱讀 1336

// 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。錨點 萬用字元 替...