C++ //练习 17.23 编写查找邮政编码的正则表达式。一个美国邮政编码可以由五位或九位数字组成。前五位数字和后四位数字之间可以用一个短横线分隔。

C++ Primer(第5版) 练习 17.23

练习 17.23 编写查找邮政编码的正则表达式。一个美国邮政编码可以由五位或九位数字组成。前五位数字和后四位数字之间可以用一个短横线分隔。

环境:Linux Ubuntu(云服务器)
工具:vim
代码块:
cpp 复制代码
/*************************************************************************
	> File Name: ex17.23.cpp
	> Author: 
	> Mail: 
	> Created Time: Sun 18 Aug 2024 10:11:23 AM CST
 ************************************************************************/

#include<iostream>
#include<regex>
#include<string>
using namespace std;

bool valid(const smatch &m){
    if(m[1].matched){
        return m[3].matched && (m[4].matched == 0 || m[4].str() == " ");
    }
    else{
        return !m[3].matched && m[4].str() == m[6].str();
    }
}

int main(){
    string postcode = "(\\d{5})([-])?(\\d{4})?";
    regex r(postcode);
    smatch m;
    string s;
    while(getline(cin, s)){
        for(sregex_iterator it(s.begin(), s.end(), r), end_it; it != end_it; ++it){
            if(valid(*it)){
                cout<<"valid: "<<it->str()<<endl;
            }
            else{
                cout<<"not valid: "<<it->str()<<endl;
            }
        }
    }

    return 0;
}
运行结果显示如下:
相关推荐
wapicn99几秒前
智能识别技术在生活服务领域的落地应用与前景展望
java·c++·人工智能·python·php
是翔仔呐3 分钟前
第6章 UART串口通信!掌握单片机与外界的双向数据通道,实现跨设备交互
c语言·开发语言·单片机·嵌入式硬件·gitee
黎阳之光3 分钟前
AI数智筑防线 绿色科技启新篇,如何用硬核技术赋能生态安全双升级
人工智能·科技·算法·安全·数字孪生
带娃的IT创业者5 分钟前
从本地开发到 PyPI发布:WeClaw 的 Python 包标准化之旅
开发语言·python
2201_758642646 分钟前
自定义内存检测工具
开发语言·c++·算法
吠品9 分钟前
QEMU Windows虚拟机NAT网络配置指南:实现IP自动获取与外部访问
开发语言·php
fpcc9 分钟前
C++编程实践—操作系统调优和内核旁支
开发语言·c++
Westward-sun.11 分钟前
矿物分类实战(一):从异常值到标准化——数据清洗全流程拆解
人工智能·算法·机器学习·数据清洗
不想看见40415 分钟前
QAbstractItemModel 自定义实现--Qt 模型 / 视图(MVC)
开发语言·qt·mvc
不想看见40417 分钟前
Qt 事件循环与事件过滤器讲解【详细】
开发语言·数据库·qt