当前位置: 首页 > news >正文

做网站服务器是必须购买的吗网络营销与直播电商怎么样

做网站服务器是必须购买的吗,网络营销与直播电商怎么样,建设项目自主验收公示网站,页面跳转英文序言 正则表达式#xff0c;简而言之就是用来匹配指定模式字符串的工具#xff0c;在计算机的世界中#xff0c;它发挥着很大的作用#xff0c;比如编译器的词法分析#xff0c;注册时验证密码的复杂度#xff0c;爬虫爬取固定格式的数据时等场景都要用到。那么本篇的目的…序言 正则表达式简而言之就是用来匹配指定模式字符串的工具在计算机的世界中它发挥着很大的作用比如编译器的词法分析注册时验证密码的复杂度爬虫爬取固定格式的数据时等场景都要用到。那么本篇的目的就是能够让大家快速上手正则表达式并学会相关的接口。下面将先从使用规则入手先上手正则表达式再介绍C11库中给出的接口编写出能够匹配指定规则字符串的正则表达式因此就算不懂C也能学会使用正则表达式。 一、基本规则 测试工具 推荐一个方便进行正则表达式测试的网站https://regex101.com这一个就够了。 说明在Vscode下按下 CTRL F以及网页代码的编写界面中 也可以使用正则表达式进行测试感兴趣的读者可自行了解。 先介绍一下使用此网站匹配的效果即当输入字符串时如果匹配正则表达式的内容则会以高亮的形式显示出来如下图。 限定符 一般来说限定符限定是前面的字符的出现次数通常使用的有*{n,m}{n,} {n}。 先来看表示限制前面的字符出现1次或者多次。举个例子当使用a去匹配aabb时aa的部分会以高亮的形式显示出来如下图。 再来看*表示前面的字符出现任意次比上面的的区别是可以出现0次。举个例子当使用ca*bb去匹配cbb时,cbb会以高亮的形式显示出来原因就在于a*表示a可以出现0次效果如下图。 接着来看表示前面的字符出现1次或者0次。当使用ca?bb去匹配cbb时,cbb会以高亮的形式显示出来效果如下图。 最后来看{n,m}{n,} {m}分别表示前面的字符出现n到m次至少出现n次m次可以帮助更好地控制字符的出现次数。举个例子使用的匹配字符串为aaaaa当分别使用a{3}a{3,}a{3,4}匹配时分别为a出现3次a出现至少3次a出现3次到4次。效果如下图。 除此之外这里再多介绍一个基本上是万能的字符.即表示匹配除换行符之外的任意一个字符。比如说hell. world就可以完全匹配hello world效果如下图并且一般来说常见的组合是.*即表示匹配除换行符之外的字符任意次。 介绍到这里你或许会觉得正则表达式这么简单么当然不是上面所说的仅仅是很简单的用法而已还要搭配着其它的正则表达式的字符进行使用才有更高阶的玩法下面介绍一些可以进行搭配使用的字符。 定位符 常见的一般来说有^和$分别表示匹配行首的字符串和行尾的字符串这个十分简单举个例子分别使用 ^aa和aa\$分别去匹配aaaa分别只会匹配前面的aa和后面的aa效果如下图。 表达式 常见的一般来说有()为子表达式存放的是指定要求的匹配模式[]为中表达式存放的是字符的范围。 首先来看()光看理论是不容易理解的直接看例子比如说(aa)?bb其中aa表示可以匹配0次或者一次去匹配aabb和bb都能匹配成功效果如下图。 除此之外这里再介绍一个逻辑字符 |表示或的意思配合()可以用来匹配指定条件的字符串比如(aa|ac)bb就可以匹配aabb以及acbb效果如下图在筛选出固定后缀的字符串时比较适用。 再来看[]同理还是直接看例子比如b[az]c就可以匹配bac以及bzc效果如下图。 除此之外这里也要多介绍一个^表示逻辑取反的意思比如a[^be]c 可以匹配除了abc和aec之外的a.c模式的字符串效果如下图。 补充除了放指定满足要求的字符外还可以放字符的范围比如[a-z]表示所有的小写字母[0-9]表示所有的数字字符等等。 等价替换 在正则表达式中[]中存放表示范围的字符或许太常用了比如[a-z][0-9]所以采用了一些特殊字符将其等价替换常见的有\d对应着[0-9]与之相反的是\D对应着[^0-9] , \w对应着[a-z]与之相反的是\W对应着[^a-z] \s对应着 [ \f\n\r\t\v]即可以匹配任意的空格符制表符换行符等与之相反的是\S对应着[^\f\n\r\t\v] 。举个例子比如\d\w\s即可匹配小写字母字符 数字字符 换行符默认的字符串效果如下图。 读到了这里相信各位已经对正则表达式有了一个基本的认识恭喜你简单入门了! 不过还需各位进行实践解锁更多玩法下面将介绍C11提供的正则表达式的基本接口。 二、接口介绍 C11中引入了regex库即引入了关于正则表达式的调用接口的库主要包含std::regex类用于存放正则表达式std::smatch类用于存放匹配的结果std::regex_match进行全文匹配std::regex_search进行搜索匹配项std::regex_replace用于替换与正则表达式匹配的字符串。展开来讲还有很多感兴趣的读者可自行到官方文档——cplusplus了解。 1.正则表达式 regex即正则表达式对象用于设置目标字符串的正则表达式用字符串进行初始化和赋值里面包含一些接口mark_count获取子表达式的数量flags用于设置匹配的模式imbue与getloc设置与获取区域设置等等。 说明 子表达式简单理解为正则表达式中一对()即为一个子表达式。匹配模式比如设置为icase即为忽略大小写。区域设置与时间地区语言字符集等内容相关。比如设置UTF-8GBKASCII编码等不同的字符集。 2.容器 smatch存放匹配结果的容器用于匹配string类型的对象类似的还有cmatch。如果没有匹配成功则为空如果匹配成功下标为0处存放的是匹配的结果下标为1处存放的是第一个子表达式下标为2处存放的是第二个子表达式以此类推。常用的接口有prefix与suffix分别用于获取匹配结果的前缀和后缀length与position分别用于获取指定下标处的字符串的长度和在原字符串的位置str和[]用于获取指定下标处的匹配结果empty和ready分别用于检测是否为空和是否在之前被调用过。 3.全文匹配 函数名——regex_match参数 string匹配的字符串。smatch输出型参数存放匹配的结果。regex正则表达式对象。 返回值匹配成功为true反之为false。 demo #includeiostream #includeregex #includestring using namespace std; int main() {smatch res;//存放结果string str subject;string pattern((sub)(.*));regex r(pattern); bool ret regex_match(str,res,r);if (ret){cout 匹配成功 endl;cout 匹配的结果为: res[0] endl;cout 第一个子表达式为: res[1] endl;cout 第二个子表达式为: res[2] endl;}else{cout 匹配失败 endl;}return 0; }output 拓展使用正则表达式获取解析Http协议字段 #include iostream #include string #include regex #include iterator using namespace std; int main() {//全文匹配使用子表达式存放解析结果只提取出请求方法域名信息查询字段(可能有或者没有)。smatch res;string str GET /blog.csdn.net/Shun_Hua?userxiaomingpass123123 HTTP/1.1\r\n;string pattern((GET|HEAD|POST|PUT|DELETE) ([^?]*)(?:\\?(.*))? HTTP/1\\.[01](?:\r\n|\n)?);//(GET|HEAD|POST|PUT|DELETE)请求方法的匹配。//([^?]*)表示匹配非问号字符串用于获取域名。//\\?首先是特殊字符要想正常匹配得使用\进行转义\也是特殊转义字符要想使用得再使用\进行转义。//(.*).*是对任意字符串进行匹配。//?:\\?表示不提取?到res中//(\\?(.*))?表示子表达式出现0次或者1次。//(?:\\?(.*))?子表达式出现0次或者1次不提取?提取(.*)到res中。//HTTP/1\\.[01],匹配版本号。//(?:\r\n|\n)?同理表示匹配\r\n或者\n0次或者1次且不提取。regex r(pattern);bool ret regex_match(str, res, r);if (ret){cout 匹配成功 endl;for (auto e : res){cout e endl;}}else{cout 匹配失败 endl;}return 0; }output 4.搜索 函数名——regex_search参数 string匹配的字符串。smatch输出型参数存放匹配的结果。regex正则表达式对象。 返回值匹配成功为true反之为false。 demo: #include iostream #include string #include regex int main() {string str(this subject has a marine.);smatch res;//存放结果regex r(subject); bool ret regex_search(str, res, r);if (ret){cout 匹配成功 endl;cout 匹配的结果为: res[0] endl;cout 前缀为 res.prefix() endl;cout 后缀为 res.suffix() endl;}else{cout 匹配失败 endl;}return 0; }output: 5.替换 函数名——regex_replace参数 string匹配的字符串。regex正则表达式对象。string用于替换的字符串。 返回值匹配成功为true反之为false。 demo #include iostream #include string #include regex #include iterator using namespace std; int main() {string s(there is subject in the string\n);regex e(subject); string rep something;cout std::regex_replace(s, e, rep) endl;return 0; }output 尾序 本篇介绍了正则表达式的基本使用以及C11中提供的接口总的来说入门正则表达式并不难难的是如何活学活用剩下就靠各位读者实践解锁更多玩法了我是舜华期待与你的下一次相遇
http://www.zqtcl.cn/news/539396/

相关文章:

  • 广州电力建设有限公司网站按月网站建设
  • 做网站客户会问什么问题手机如何制作网页链接
  • 做足球直播网站wordpress筛选框
  • 做网站需求文档深圳站建在边境
  • 网站建设法规浙江建设信息港证书查询
  • 影视作品网站开发与设计网站建设教程简笔画
  • 自己可以给公司做网站吗网站建设 用ftp上传文件
  • 电子商务网站开发与管理网站建设的设备
  • 网站建设项目公司沈阳网站关键字优化
  • 可以做淘宝联盟的免费网站优质国外网站
  • 石家庄营销型网站建设公司服装公司网站源码
  • 网站开发的软硬件需求做网站盘锦
  • 创意网站建设排行榜python和php哪个做网站
  • 开锁做网站怎么样榆林网站开发公司
  • 松原市建设局网站苏州网站建设-中国互联
  • 标书制作教程视频网站福田祥菱v1单排
  • 点网站出图片怎么做能看人与动物做的网站
  • 免费开源建站系统源码wordpress公共函数在哪里
  • 西昌市建设工程管理局网站模块化网站开发
  • 无限看片的视频大全免费下载上海网络优化方法
  • 物流公司做网站注重什么问题中国建设银行征信中心网站
  • 教务处网站建设专业做鞋子的网站吗
  • 梦幻创意网站建设成都做网站设计哪家便宜
  • 织梦网站栏目修改教程丝绸之路网站建设意义
  • 如何知道一个网站是谁做的北京装饰公司前十名
  • 杭州网站建设哪个平台好visualstudio 做网站
  • 广州站是哪个站h5建站系统
  • 网站首页网址应该有对应的域名南京高端模板建站
  • 自己做的网站竞价优化怎么做网站流量赚钱吗
  • 人力资源网站建设mip网站模板