使用boost::regex库,首先安装libboost-regex-dev

# sudo apt-get install libboost-regex-dev
#include <deque>
#include <iostream>
#include <algorithm>
#include <boost/regex.hpp>
using namespace boost;
using namespace std;

int main() {
   string str = ""
       "        eth1      Link encap:Ethernet  HWaddr 00:E0:4C:9E:B5:EF\n"
       "          inet addr:192.168.0.193  Bcast:192.168.0.255   Mask:255.255.255.0\n"
       "          inet6 addr: fe80::2e0:4cff:fe9e:b5ef/64 Scope:Link\n"
       "          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n"
       "          RX packets:25608 errors:0 dropped:0 overruns:0 frame:0\n"
       "          TX packets:23396 errors:0 dropped:0 overruns:0 carrier:0\n"
       "          collisions:0 txqueuelen:1000\n"
       "          RX bytes:27459152 (26.1 MiB)  TX bytes:3307863 ( 3.1 MiB)\n"
       "          Interrupt:11 Base address:0xec00\n";

    string exp = ""
       "\s+hwaddr\s+(.{17})"
       "\s+inet addr:(\d+.\d+.\d+.\d+)"
       ".mask:(\d+.\d+.\d+.\d+)"
       ".(\w{2})\s+broadcast.mtu:(\d+).metric:(\d+)"
       ".packets:(\d+)\s+errors:(\d+)\s+dropped:(\d+)\s+overruns:(\d+)\s+frame:(\d+)"
       ".packets:(\d+)\s+errors:(\d+)\s+dropped:(\d+)\s+overruns:(\d+)\s+carrier:(\d+)"
       ".bytes:(\d+).bytes:(\d+)";

    regex expressionextended | regbase::icase;
    deque result;
    regex_splitback_inserter(result), str, expression;

    //copy(result.begin(),result.end(),ostream_iterator(cout,"\n"));
    deque::iterator it = result.begin();
    for (; it != result.end(); ++it) {
        cout<<"("<<*it<<")"<<endl;
    }

    return 0;
}
# g++ test.cpp -lboost_regex
# ./a.out
(00:E0:4C:9E:B5:EF)
(192.168.0.193)
(255.255.255.0)
(UP)
(1500)
(1)
(25608)
(0)
(0)
(0)
(0)
(23396)
(0)
(0)
(0)
(0)
(27459152)
(3307863)