正则表达式

本文详细介绍了C++中的正则表达式函数,包括std::regex_match用于完全匹配,std::regex_search查找首个匹配子串,以及std::regex_replace的功能。同时讲解了std::match_results和std::sub_match的使用,以及正则表达式的子匹配概念。重点对比了std::regex_match和std::regex_search的区别,帮助读者深入理解C++正则表达式操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.std::regex_match

目标字符串需要完全匹配正则表达式,目标字符串一个也不能多。

2.std::regex_search

搜索目标字符串中第一个匹配正则表达式子串。

3.std::regex_replace

待补充

4.std::match_results

std::match_results可以作为std::regex_match和std::regex_search参数,匹配后会对std::match_results进行填充,std::match_results中的每一项为sub_match。若匹配成功,其中第0个元素为完全匹配的字符串,suffix和prefix为未匹配的字符串。

  • std::match_results::ready 匹配成功后,通过std::match_results::ready来判断结果是否准备好。
  • std::match_results::empty 通过std::match_results::empty判断结果是否为空。
  • std::match_results::size 返回匹配结果的数量。
  • std::match_results::len(size_type n = 0) 返回第n个匹配字符串的长度
  • std::match_results::str(size_type n = 0) 返回第n个匹配字符串
5.std::sub_match
  • std::sub_match为std::match_results中的一个子匹配项,若把std::match_results看作数组,则std::sub_match为数组元素。
  • std::sub_match中有一个布尔型成员matched(true标识该项为匹配项,否则反之)。
  • std::sub_match继承自std::pair。std::sub_match不保存匹配的字符串本身,仅保存匹配的字符串起始和末尾位置的迭代器,通过迭代器的方式来表示一个字符串。
    在这里插入图片描述
6.关于正则表达式中的子匹配
  • 正则表达式中的“()“表示子匹配,括号包裹的表达式被视为一个整体进行匹配。如:
    [0-9]{8}(\\\\1dddd)+ 表示匹配八位0到9的数字和\1dddd,12345678\1dddd是一个匹配项。
  • 子匹配存储从std::match_results的第一个元素开始。
    注意:正则表达式用匹配元字符,需使用转义字符“\”,如在字符串中需使用“\”来表示“\”。如:
    匹配”.“ 的正则表达式字符串的表示为:“\\.”
7.std::regex_match和std::regex_search区别
  • std::regex_match :目标字符串需要完全匹配正则表达式,目标字符串一个也不能多。
  • std::regex_search:搜索目标字符串中第一个匹配正则表达式子串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值