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:搜索目标字符串中第一个匹配正则表达式子串。