• C++中 regex 匹配中文字符一例


    #include <iostream>
    #include <regex>
    #include <tchar.h> //_T
    using namespace std;


    int main()
    {
        /*string s0 = "学正楼";
        cout << s0[0] ;
        cout << s0[1] << endl;
    */

        //wcout.imbue(locale("chs", locale::ctype));  //据说有平台问题
        
    //wstring s1 = L"学正楼";
        
    //wcout << s1[0];

        std::locale loc("");
        std::wcout.imbue(loc);

        std::wstring text(L"我的IP地址是:109.168.0.1.");
        std::wstring newIP(L"127.0.0.1");
        std::wstring regString(L"(\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 << L"正则表达式:" << regString << L"匹配:" << text << L"成功." << std::endl;
        }
        else
        {
            std::wcout << L"正则表达式:" << regString << L"匹配:" << text << L"失败." << std::endl;
        }

        // 查找  
        if (std::regex_search(text, ms, regExpress))
        {
            std::wcout << L"正则表达式:" << regString << L"查找:" << text << L"成功." << std::endl;
            for (size_t i = 0; i < ms.size(); ++i)
            {
                std::wcout << L"" << i << L"个结果:"" << ms.str(i) << L"" - ";
                std::wcout <<L"起始位置:" << ms.position(i) << L"长度" << ms.length(i) << std::endl;
            }
            std::wcout << std::endl;

            // 替换1  
            text = text.replace(ms[0].first, ms[0].second, newIP);
            std::wcout << L"替换1后的文本:" << text << std::endl;
        }
        else
        {
            std::wcout << L"正则表达式:" << regString << L"查找:" << text << L"失败." << std::endl;
        }

        // 替换2  
        newIP = L"255.255.0.0";
        std::wstring newText = std::regex_replace(text, regExpress, newIP);
        std::wcout << L"替换2后的文本:" << newText << std::endl;

        // 结束  
        std::wcout << L"按回车键结束...";
        std::wcin.get();
        return 0;


        getchar();
        return 0;
    }
  • 相关阅读:
    conda配置文件.condarc
    conda--python环境管理工具
    angular引入UEditor
    spark-MD5文件MD5加密
    js数组切片
    Window.postMessage() 解决父页面与iframe之间跨域通信问题,实时获取iframe消息动态
    博客园自定义主题
    html-标签转义-反转义
    uni-app获取通讯录信息 获取手机号
    LeetCode第243场周赛
  • 原文地址:https://www.cnblogs.com/likeatree/p/3956883.html
Copyright © 2020-2023  润新知