经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
正则表达式小结
来源:cnblogs  作者:放不下的小女孩  时间:2021/5/17 9:26:22  对本文有异议

  

  学习完C++Primer第五版第十七章第三小节正则表达式后小结一下:

 

  1、regex的匹配机制 不能直接确定输入序列中总共有多少表达式正确匹配给定的正则表达式。

  注意:不要误认为match的成员函数size()返回的是匹配值的数量,匹配成功时size返回的是匹配的子表达式的数量+1(此处C++Primer上写的是子表达式的数量)

  不论下式的mystring为何值,size()值恒为3或0;

  std::string mystring ("subject");
  std::smatch mymatches;
  std::regex myregex ("(sub)(.*)");
  std::regex_match ( mystring, mymatches, myregex );
   mymatches.size();

  

  2、定位符^和$不能作为匹配的内容只能代表位置:

1 //匹配一个开头是字母或者一个数字后跟一个字母的表达式
2 (^|\b)[a-zA-Z]    //正确
3 [^\b][a-zA-Z]    //错误
4 //匹配一个结尾是字母或者一个数字后跟一个字母的表达式
5 [a-zA-Z]($|\b]    //正确
6 [a-zA-Z][$\b]    //错误

 

 3. 匹配一个空格用方括号中间加一个空格表示[ ]

([ ]|^)    //代表在开头或者前面是一个空格

 

 4. 用整段或者整行(包含较多控制符如空格换行等)作为regex正则表达式的输入时,注意定位符^$代表的位置和控制符的匹配。

this code just 
for test

   上式中开头定位符^在this之前,而for之前没有任何符号(个人猜测,未找到文献证明,如有不对请指出)。结尾定位符$在test之后。just后面有一个换行符\n或\r,即

^this code just\n
for test$

 

原文链接:http://www.cnblogs.com/wildricky/p/14762315.html

 友情链接:直通硅谷  点职佳  北美留学生论坛