C++ 正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ 正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2073字,纯文字阅读大概需要3分钟。
内容图文
![C++ 正则表达式](/upload/InfoBanner/zyjiaocheng/1206/361b774eb7c54bd99f9f28631d618220.jpg)
//1.当函数返回string时候的注意点: string Fun() { return string("szn"); } const char* pStr = Fun().c_str(); //如上代码,pStr = "" 而非 "szn",原因:返回的string变量被析构了 //2.正则表达式组件: regex:用于表示一个正则表达式 regex_match:将一个字符序列与一个正则表达式匹配 regex_search:寻找第一个与正则表达式匹配的子序列 regex_replace:使用给定格式替换一个正则表达式 sregex_iterator:迭代器适配器,调用regex_search来遍历一个string中所有匹配的字串 smatch:容器类,保存在string中搜索的结果 ssub_match:string中匹配的字表达式的结果 regex文件中的一些定义: typedef basic_regex<char> regex; typedef basic_regex<wchar_t> wregex; typedef match_results<const char *> cmatch; typedef match_results<const wchar_t *> wcmatch; typedef match_results<string::const_iterator> smatch; typedef match_results<wstring::const_iterator> wsmatch; regex_search, regex_match的参数(返回值均为bool类型): seq, m, r, mft seq, r, mft seq:字符序列 m:与seq兼容的match对象 r:一个正则表达式 mtf:可选值,用来保存匹配结果的相关细节 输入类型与正则表达式库对应关系: string regex, smatch, ssub_match, sregex_iterator const char* regex, cmatch, csub_match, cregex_iterator wstring wregex, wsmatch, wssub_match, wsregex_iterator const wchar_t* wregex, wcmatch, wcsub_match, wcregex_iterator regex(和 wregex)选项: regex r(re, f):f为可选参数,默认为 regex::ECMAScript,此标志控制regex对象的处理过程 f: regex::icase 忽略大小写 regex::nosubs 不保存匹配的子表达式 regex::optimize 执行速度优于构造速度 regex::ECMAScript regex::basic regex::extended regex::awk regex::grep regex::egrep =:赋值操作 regex re; re = "[123]"; r.assign(re, f):功能等同于赋值操作 r.mark_count():r中表达式数目 r.flags():返回r的标志集 //3.regex_search使用示例: regex re("[[:alpha:]]*[^c]ei[[:alpha:]]*"); cmatch cm; if (regex_search("receipt freind theif recive", cm, re)) { const char* pStrC = cm.str().c_str(); //pStrC = "" string str = cm.str(); //str = "freind" } regex re("[a-z]+", regex::icase); smatch sm; string strContent("12 3456ABCabc7 89"); if (regex_search(strContent, sm, re)) { string str = sm.str(); //str = "ABCabc" } //4. A:一个正则表达式的语法是否正确是在运行时候进行解析的 B:若编写的正则表达式有误,则运行时,标准库会抛出一个regex_error的异常 C:正则表达式的编译可能会是一个非常慢的操作,所以要避免创建很多没必要的regex变量 try { regex re("["); } catch (std::regex_error e) //e = {_Err=error_brack } { printf(""); //运行至此 }
原文:http://www.cnblogs.com/szn409/p/7471427.html
内容总结
以上是互联网集市为您收集整理的C++ 正则表达式全部内容,希望文章能够帮你解决C++ 正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。