栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ Primer 5th笔记(chap 17 标准库特殊设施)ECMAScript正则表达式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ Primer 5th笔记(chap 17 标准库特殊设施)ECMAScript正则表达式

  1. ECMAscript正则表达式语言的一些特性

子表达式的索引从1开始。

在fmt中用$后跟子表达式的索引号来标识一个特定的子表达式

  • {d}表示单个数字而{d}{n}则表示一个n个数字的序列。(如,{d}{3}匹配三个数字的序列)

  • 在方括号中的字符集合表示匹配这些字符串中任意一个(如,[-. ]匹配一个短横线或一个点或一个空格)

  • 后接‘?’的组件是可选的( 如, { d } { 3 } [-. ] ? { d} { 4 } 匹配这样的序列: 开始是三个数字, 后接一个可选的短横线或点或空格, 然后是四个数字。 此模式可以匹配 555-0132 或 555.0132 或 555 0132 或 5550132。 )

  • 类似C++,在模式中每次出现的的地方需要转义因此需要使用

eg.

// 整个正则表达式包含七个子表达式: ( ddd ) 分隔符 ddd 分隔符 dddd
// 子表达式 1、 3、 4 和 6 是可选的; 2、 5 和 7 保存号码

string phone = "(\()?(\d{3})(\))?([-.])?(\d{3})([-.])?(\d{4})"
  • "(()?表示区号部分可选的左括号

  • (d{3})表示区号

  • ())?表示区号部分可选的右括号

  • ([-.])?表示区号部分可选的分隔符

  • (d{3})表示号码的下三位

  • ([-.])?表示可选的分隔符

  • (d{4})表示号码的最后四位数字

string phone = "(\()?(\d{3})(\))?([-. ])?(\d{3})([-. ]?)(\d{4})";
regex r(phone);
string s;
while (getline(cin, s)) {
    for (sregex_iterator it(s.begin(), s.end(), r), end_it; it != end_it; ++it) {
        if (valid(*it)) {    // valid为自定义函数,检查通过匹配后的号码是否合法
            cout << "valid: " << it->str() << endl;
        } else {
            cout << "not valid: " << it->str() << endl;
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433412.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号