<i id='H2cSl'><tr id='H2cSl'><dt id='H2cSl'><q id='H2cSl'><span id='H2cSl'><b id='H2cSl'><form id='H2cSl'><ins id='H2cSl'></ins><ul id='H2cSl'></ul><sub id='H2cSl'></sub></form><legend id='H2cSl'></legend><bdo id='H2cSl'><pre id='H2cSl'><center id='H2cSl'></center></pre></bdo></b><th id='H2cSl'></th></span></q></dt></tr></i><div id='H2cSl'><tfoot id='H2cSl'></tfoot><dl id='H2cSl'><fieldset id='H2cSl'></fieldset></dl></div>

<small id='H2cSl'></small><noframes id='H2cSl'>

    <legend id='H2cSl'><style id='H2cSl'><dir id='H2cSl'><q id='H2cSl'></q></dir></style></legend>

    1. <tfoot id='H2cSl'></tfoot>
        <bdo id='H2cSl'></bdo><ul id='H2cSl'></ul>

      带有 Boost Regex 的 C++ 正则表达式

      时间:2023-07-20
    2. <legend id='tZZzi'><style id='tZZzi'><dir id='tZZzi'><q id='tZZzi'></q></dir></style></legend>

          • <bdo id='tZZzi'></bdo><ul id='tZZzi'></ul>
            <tfoot id='tZZzi'></tfoot>
          • <small id='tZZzi'></small><noframes id='tZZzi'>

            <i id='tZZzi'><tr id='tZZzi'><dt id='tZZzi'><q id='tZZzi'><span id='tZZzi'><b id='tZZzi'><form id='tZZzi'><ins id='tZZzi'></ins><ul id='tZZzi'></ul><sub id='tZZzi'></sub></form><legend id='tZZzi'></legend><bdo id='tZZzi'><pre id='tZZzi'><center id='tZZzi'></center></pre></bdo></b><th id='tZZzi'></th></span></q></dt></tr></i><div id='tZZzi'><tfoot id='tZZzi'></tfoot><dl id='tZZzi'><fieldset id='tZZzi'></fieldset></dl></div>
                  <tbody id='tZZzi'></tbody>
                本文介绍了带有 Boost Regex 的 C++ 正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我试图在 C++ 中获取一个字符串并找到其中包含的所有 IP 地址,并将它们放入一个新的向量字符串中.

                I am trying to take a string in C++ and find all IP addresses contained inside, and put them into a new vector string.

                我已经阅读了很多关于正则表达式的文档,但我似乎无法理解如何执行这个简单的函数.

                I've read a lot of documentation on regex, but I just can't seem to understand how to do this simple function.

                我相信我可以使用这个 Perl 表达式来查找任何 IP 地址:

                I believe I can use this Perl expression to find any IP address:

                re("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)");
                

                但我仍然不知道如何做剩下的事情.

                But I am still stumped on how to do the rest.

                推荐答案

                也许您正在寻找这样的东西.它使用 regex_iterator 来获取当前模式的所有匹配项.请参阅参考.

                Perhaps you're looking for something like this. It uses regex_iterator to get all matches of the current pattern. See reference.

                #include <boost/regex.hpp>
                #include <iostream>
                #include <string>
                
                int main()
                {
                    std::string text(" 192.168.0.1 abc 10.0.0.255 10.5.1 1.2.3.4a 5.4.3.2 ");
                    const char* pattern =
                        "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
                        "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
                        "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
                        "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
                    boost::regex ip_regex(pattern);
                
                    boost::sregex_iterator it(text.begin(), text.end(), ip_regex);
                    boost::sregex_iterator end;
                    for (; it != end; ++it) {
                        std::cout << it->str() << "
                ";
                        // v.push_back(it->str()); or something similar     
                    }
                }
                

                输出:

                192.168.0.1
                10.0.0.255
                5.4.3.2
                

                旁注:你可能指的是 \b 而不是 ;我怀疑你想要匹配退格字符.

                Side note: you probably meant \b instead of ; I doubt you watnted to match backspace character.

                这篇关于带有 Boost Regex 的 C++ 正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:在 Windows 上使用 Boost_USE_STATIC_LIB OFF 链接 boost 库 下一篇:将 std::variant 与递归一起使用,而不使用 boost::recursive_wrapper

                相关文章

                <tfoot id='QvUay'></tfoot>
                1. <i id='QvUay'><tr id='QvUay'><dt id='QvUay'><q id='QvUay'><span id='QvUay'><b id='QvUay'><form id='QvUay'><ins id='QvUay'></ins><ul id='QvUay'></ul><sub id='QvUay'></sub></form><legend id='QvUay'></legend><bdo id='QvUay'><pre id='QvUay'><center id='QvUay'></center></pre></bdo></b><th id='QvUay'></th></span></q></dt></tr></i><div id='QvUay'><tfoot id='QvUay'></tfoot><dl id='QvUay'><fieldset id='QvUay'></fieldset></dl></div>
                2. <legend id='QvUay'><style id='QvUay'><dir id='QvUay'><q id='QvUay'></q></dir></style></legend>
                  • <bdo id='QvUay'></bdo><ul id='QvUay'></ul>

                    <small id='QvUay'></small><noframes id='QvUay'>