zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    jmeter正则表达式书写
    Jmeter中if控制器的使用
    Jmeter组件之-Test Fragment(测试片段)
    Jmeter生成测试报告
    idea+maven+testng环境搭建以及基本使用
    ArrayList,HashSet,HashMap
    JAVA提供了八大基本数据类型对应的引用数据类型
    Properties解析
    JSON解析
    excel 解析
  • 原文地址:https://www.cnblogs.com/likeatree/p/3956883.html
Copyright © 2011-2022 走看看