c++中如何用正则表达式表示包含某一串特定字符的网址?求代码示例

比如我想用一个变量表示包含youku的所有网址代码该怎么写?求完整的代码包括头文件以及使用到的库... 比如我想用一个变量表示包含youku的所有网址 代码该怎么写? 求完整的代码 包括头文件 以及使用到的库 展开
 我来答
ghzx071458
推荐于2016-08-22 · TA获得超过1416个赞
知道小有建树答主
回答量:651
采纳率:50%
帮助的人:385万
展开全部
C++语言特性上不支持。目前标准库中也没有直接的支持。需要另外配置支持正则表达式的库。常用的是boost.regex库,具体资料很多,可以直接搜索。另外还有ATL CAtlRegExp、GRETA等。

要使用正则表达式,首先要有类库支持,C++以前不像Java或者C#有完整的类库使用,但是在Tr1中早已提供了正则库,只是很少被人们注意罢了
 
TR1中包含了一个正则库,来自Boost的 regex,已经纳入了0x新标准,但是新标准遥遥无期。即便如此,现在很多编译器也已经支持了,特别是微软,步伐最快!
虽然现在新标准还未完全支持,但是早点了解一下也是好的:

#include <iostream>  
#include <regex>  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
      
     std::locale loc("");    
    std::wcout.imbue(loc);    
    
    std::wstring text(_T("我的IP地址是:109.168.0.1."));    
    std::wstring newIP(_T("127.0.0.1"));    
    std::wstring regString(_T("(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"));    
    
    // 表达式选项 - 忽略大小写     
    std::regex_constants::syntax_option_type fl = std::regex_constants::icase;    
        
    // 编译一个正则表达式语句     
    std::wregex regExpress(regString, fl);    
    
    // 保存查找的结果     
    std::wsmatch ms;    
    
    // 判断是否全行匹配     
    if(std::regex_match(text, ms, regExpress))    
    {    
        std::wcout<<_T("正则表达式:")<<regString<<_T("匹配:")<<text<<_T("成功.")<<std::endl;    
    }    
    else    
    {    
        std::wcout<<_T("正则表达式:")<<regString<<_T("匹配:")<<text<<_T("失败.")<<std::endl;    
    }    
    
    // 查找     
    if(std::regex_search(text, ms, regExpress))    
    {    
        std::wcout<<_T("正则表达式:")<<regString<<_T("查找:")<<text<<_T("成功.")<<std::endl;    
        for(size_t i= 0; i < ms.size(); ++i)    
        {    
            std::wcout<<_T("第")<<i<<_T("个结果:\"")<<ms.str(i)<<_T("\" - ");    
            std::wcout<<_T("起始位置:")<<ms.position(i)<<_T("长度")<<ms.length(i)<<std::endl;    
        }    
        std::wcout<<std::endl;    
    
        // 替换1     
        text = text.replace(ms[0].first, ms[0].second, newIP);    
        std::wcout<<_T("替换1后的文本:")<<text<<std::endl;    
    }    
    else    
    {    
        std::wcout<<_T("正则表达式:")<<regString<<_T("查找:")<<text<<_T("失败.")<<std::endl;    
    }    
    
    // 替换2     
    newIP = _T("255.255.0.0");    
    std::wstring newText = std::regex_replace( text, regExpress, newIP);    
    std::wcout<<_T("替换2后的文本:")<<newText<<std::endl;    
    
    // 结束     
    std::wcout<<_T("按回车键结束...");    
    std::wcin.get();    
      
    return 0;  
}
追问
不要随便的复制粘贴好啊?
追答
OK。
TableDI
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式