gpt4 book ai didi

c++ - 在 C++ STL 中,如何使用 regex_replace 从 std::string 中删除非数字字符?

转载 作者:行者123 更新时间:2023-11-30 00:47:19 25 4
gpt4 key购买 nike

使用 C++ 标准模板库函数 regex_replace(),如何从 std::string 中删除非数字字符并返回 std: :string?

This question is not a duplicate of question 747735 because that question requests how to use TR1/regex, and I'm requesting how to use standard STL regex, and because the answer given is merely some very complex documentation links. The C++ regex documentation is extremely hard to understand and poorly documented, in my opinion, so even if a question pointed out the standard C++ regex_replace documentation, it still wouldn't be very useful to new coders.

最佳答案

// assume #include <regex> and <string>
std::string sInput = R"(AA #-0233 338982-FFB /ADR1 2)";
std::string sOutput = std::regex_replace(sInput, std::regex(R"([\D])"), "");
// sOutput now contains only numbers

请注意,R"..." 部分表示原始字符串文字,并且不会像 C 或 C++ 字符串那样计算转义码。这在执行正则表达式时非常重要,可以让您的生活更轻松。

这是一个方便的单字符正则表达式原始文字字符串列表,供您的 std::regex() 用于替换场景:

  • R"([^A-Za-z0-9])"R"([^A-Za-z\d])" = 选择非字母和非数字
  • R"([A-Za-z0-9])"R"([A-Za-z\d])" = 选择字母数字
  • R"([0-9])"R"([\d])" = 选择数字
  • R"([^0-9])"R"([^\d])"R"([\D] )" = 选择非数字

关于c++ - 在 C++ STL 中,如何使用 regex_replace 从 std::string 中删除非数字字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35282906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com