C++ 正则表达式提取匹配字符串文本

头文件

#inlcude <regex>

常用相关成员

成员 作用
std::regex 创建一个regex实例,参数可以为pattern
std::regex_match 用于匹配字符串和正则表达式,有很多不同的重载形式。 最简单的一个形式就是传入 std::string 以及一个 std::regex 进行匹配, 当匹配成功时,会返回 true,否则返回 false
std::regex_search 寻找第一个与正则表达式匹配的子序列,当匹配成功时,会返回 true,否则返回 false
std::regex_replace 替换匹配,即可以将符合匹配规则的子字符串替换为其他字符串。要求输入一个正则表达式,以及一个用于替换匹配子字符串的格式化字符串。这个格式化字符串可以通过转义序列引用匹配子字符串中的部分内容
std::sregex_iterator 迭代器适配器,调用regex_search遍历string中所有匹配的子串
std::match_results 包含一系列子匹配项。
std::smatch 匹配结果。 smatch 对应于 string
std::wsmatch 匹配结果。 wsmatch 对应于 wstring
std::cmatch 匹配结果。 cmatch 对应于 char*
std::regex_error 该类描述一个异常对象,引发该异常的目的是为报告一个构造中的错误或 basic_regex 对象的使用错误。

代码示例

#include <iostream>
#include <string>
#include <regex>

int main()
{
    
    
  std::string a = "<ticket-url><![CDATA[http://121.8.177.212:7001/ticket.cgi?wlanuserip=172.17.153.124&wlanacip=1.1.1.1&portal_node=http://125.88.59.131:10002]]></ticket-url>";
  std::smatch results;
  if (std::regex_search(a, results, std::regex("<ticket-url><!\\[CDATA\\[(.*)\\]\\]></ticket-url>")))
  {
    
    
    std::cout << results[1].str() << std::endl;
  }
}

相关教程

  1. https://learn.microsoft.com/zh-cn/cpp/standard-library/regex?view=msvc-170

  2. https://blog.csdn.net/asialee_bird/article/details/103420321

  3. https://blog.csdn.net/qq_28087491/article/details/107608569

  4. https://juejin.cn/post/6956864201444818951

猜你喜欢

转载自blog.csdn.net/a924282761/article/details/129665512
今日推荐