已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
示例程序
<code class="lang-cpp">void CRegExTesstDlg::OnBnClickedButton1()
{
    m_rslt = L""; // 为文本框IDC_EDIT1创建的变量
   
    // 在stdafx.h中
    // #include <string>
    // #include <regex>
       
    // 导入命名空间
    using namespace std;
   
    // 需要的信息
    wstring srcstr = L"IPAddress: 192.168.1.1/255.255.255.0"; // 源字符串
    wstring regstr = L"(\\d+).(\\d+).(\\d+).(\\d+)"; // 正则表达式
    wregex reg1(regstr); // 构建正则表达式对象
   
    // 方法1:使用regex_match进行匹配
    m_rslt += L"使用regex_match匹配\r\n";
    if (regex_match(L"10.0.0.25", reg1)) // bool regex_match(字符串,正则)
        m_rslt += L"true\r\n";
    else
        m_rslt += L"false\r\n";
   
    // 方法2:使用regex_search提取并读取子串
    m_rslt += L"使用regex_search提取并匹配信息\r\n";
    wsmatch mr; // 结果
    wstring::const_iterator src_it = srcstr.begin(); // 获取起始位置
    wstring::const_iterator src_end = srcstr.end(); // 获取结束位置
    while (regex_search(src_it, src_end, mr, reg1)) { // bool regex_search(起始, 结束, &结果, 正则)
        for (int i = 0; i < (int)mr.size(); ++i) {
            // mr[i]返回wssub_match,其str()返回wstring,再c_str()返回wchar_t*
            m_rslt += mr[i].str().c_str();
            m_rslt += L"\r\n";
        }
        src_it = mr[0].second; // 迭代下一次搜索
    }
   
    // 方法3:使用wsregex_iterator搜索整个文本
    m_rslt += L"使用regex_iterator搜索整个文本\r\n";
    wsregex_iterator it(srcstr.begin(), srcstr.end(), reg1); // 正则迭代器(起始,结束,正则)
    wsregex_iterator end; // 空迭代器,表示迭代结束
    for (; it != end; ++it) { // 迭代直至结束
        // tit->返回wsmatch,其str()返回wstring,再c_str()返回wchar_t*
        m_rslt += *it->str().c_str();
        m_rslt += L"\r\n";
    }
   
    // 方法4:使用wsregex_token_iterator提取子串
    m_rslt += L"使用regex_token_iterator提取子串\r\n";
    int submat[] = { 0, 1, 2, 3, 4 }; // 子串索引(0为匹配串,1+为子串)
    // 正则token迭代器(起始,结束,正则,子项);
    wsregex_token_iterator tit(srcstr.begin(), srcstr.end(), reg1, submat);
    wsregex_token_iterator tend; // 空迭代器,表示迭代结束
    for (; tit != tend; ++tit) { // 迭代直至结束
        // it->返回wssub_match,其str()返回wstring,再c_str()返回wchar_t*
        m_rslt += tit->str().c_str();
        m_rslt += L"\r\n";
    }
   
    // 方法5:使用regex_search简单搜索
    m_rslt += L"使用regex_search简单搜索\r\n";
    regex_search(srcstr, mr, reg1); // bool regex_search(字符串, &结果, 正则)
    if (mr.size() != 0)
        m_rslt += L"mr.size() != 0\r\n";
    else
        m_rslt += L"mr.size() == 0\r\n";
   
    // 方法6:使用regex_replace替换1
    m_rslt += L"使用regex_replace替换1\r\n";
    m_rslt +=
        regex_replace(srcstr, reg1, L"$1.$2.x.$4") // wstring regex_replace(字符串, 正则, 表达式)
        .c_str();
    m_rslt += L"\r\n";
   
    // 方法7:使用regex_replace替换2
    m_rslt += L"使用regex_replace替换2\r\n";
    wstring resultstr;
    resultstr.resize(srcstr.size()); // 预留空间
    regex_replace(resultstr.begin(), srcstr.begin(), srcstr.end(), // 使用输入和输出迭代器
                  reg1, L"$1.$2.x.$4",
                  regex_constants::format_first_only); // 只替换第一个
    m_rslt += resultstr.c_str();
    m_rslt += L"\r\n";
   
    // 更新界面
    UpdateData(false);
}</regex></string></code>

运行界面:
捕获sss.png

输出:
<code class="lang-text">使用regex_match匹配
true
使用regex_search提取并匹配信息
192.168.1.1
192
168
1
1
255.255.255.0
255
255
255
0
使用regex_iterator搜索整个文本
1
2
使用regex_token_iterator提取子串
192.168.1.1
192
168
1
1
255.255.255.0
255
255
255
0
使用regex_search简单搜索
mr.size() != 0
使用regex_replace替换1
IPAddress: 192.168.x.1/255.255.x.0
使用regex_replace替换2
IPAddress: 192.168.x.1/255.255.255.0</code>

(示例程序使用vs2013编写)
attachment icon RegExTesst.rar 1.47MB RAR 31次下载
文号 / 772740

千古风流
名片发私信
学术分 4
总主题 466 帖总回复 2942 楼拥有证书:进士 学者 笔友
注册于 2009-05-30 21:22最后登录 2019-01-31 17:16
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步

个人简介

暂未填写
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}