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;
}
运行结果显示如下:
相关推荐
谭欣辰1 分钟前
C++ 哈希表详解
c++·算法·哈希算法·散列表
AKA__Zas1 分钟前
初识多线程(初初识)
java·服务器·开发语言·学习方法
zhangrelay5 分钟前
三分钟云课实践速通--概率统计--python版
linux·开发语言·笔记·python·学习·ubuntu
shehuiyuelaiyuehao6 分钟前
算法11,滑动窗口,最大连续1的个数|||
算法·leetcode·职场和发展
blasit6 分钟前
Qt C++ http服务器安全登录token生成管理
c++·后端·qt
南宫萧幕7 分钟前
车辆能量管理进阶:从前沿算法 (VMD-PPO-DBO) 机制解析到 MPC 工程建模
人工智能·算法·matlab·simulink·控制
云栖梦泽12 分钟前
Linux内核与驱动:GPIO设备树与SPI设备树的区别
linux·运维·c++·嵌入式硬件
张赐荣12 分钟前
深入详解在 Python 中用 ctypes 调用 Windows API 清空回收站
开发语言·windows·python
费曼学习法13 分钟前
快速选择算法:如何在 10 亿数据中瞬间找到“第 K 大”?
javascript·算法
南境十里·墨染春水15 分钟前
C++笔记——STL list
c++·笔记·list