STL 正则表达式-regex运用
2017-11-13 10:32
183 查看
// Algorithm.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "MainFrame.h" #include <fstream> #include <locale> #include <regex> using namespace std; int main() { regex rTime("(?:[0]?[0-9]|1[0-9]|2[0-3])(:(?:0?[0-9]|[1-5][0-9])){2}"); //输入时间,判断是否满足格式(00:00:00) string str; while (true) { cin >> str; if (str == "q") break; if (regex_match(str, rTime)) { cout << "the time : " << str << endl; } else { cout << "Invalid date!" << endl; } } //匹配一个或者多个字母切结尾为day regex reg1("\\w+day"); string s1 = "saturday"; string s2 = "saturday and sunday"; smatch r1; smatch r2; cout << boolalpha << regex_match(s1, r1, reg1) << endl; cout << boolalpha << regex_match(s2, r2, reg1) << endl; cout << "s1匹配结果:" << r1.str() << endl; cout << "s2匹配结果:" << r2.str() << endl; cout << endl; cout << "-------------regex_search-------" << endl; smatch rr1; smatch rr2; cout << boolalpha << regex_search(s1, rr1, reg1) << endl; cout << "s1匹配结果:" << rr1.str() << endl; cout << boolalpha << regex_search(s2, rr2, reg1) << endl; cout << "s2匹配结果:" << rr2.str() << endl; cout << endl; cout << "iterator结果:" << endl; sregex_iterator it(s2.begin(), s2.end(), reg1); sregex_iterator end; for (; it != end; ++it) { cout << it->str() << endl; //cout << *it << endl; 错误 } cout << endl; cout << "token_iterator结果:" << endl; sregex_token_iterator tit(s2.begin(), s2.end(), reg1); sregex_token_iterator tend; for (; tit != tend; ++tit) { cout << tit->str() << endl; //cout << *tit << endl; } cout << endl; //匹配IP regex reg2("(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})"); string ip = "192:168:1:1"; smatch m; regex_match(ip, m, reg2); cout << "输出:str()" << endl; cout << m.str() << endl; cout << m.str(1) << endl; cout << m.str(2) << endl; cout << m.str(3) << endl; cout << m.str(4) << endl; cout << "输出:[i]" << endl; cout << m[0] << endl; cout << m[1] << endl; cout << m[2] << endl; cout << m[3] << endl; cout << m[4] << endl; cout << endl; //输出结果同上 //regex_search(ip, m, str2); cout << endl; string ip2 = "0:11:222:333 4:55:66:7"; sregex_iterator ip_it(ip2.begin(), ip2.end(), reg2); sregex_iterator ip_end; for (; ip_it != ip_end; ++ip_it) { cout << ip_it->str() << endl; cout << ip_it->str(1) << endl; cout << ip_it->str(2) << endl; cout << ip_it->str(3) << endl; cout << ip_it->str(4) << endl; } return 0; }
相关文章推荐
- Linux C 正则表达式运用(regex.h)
- Java 中正则表达式的运用 Java.util.regex.*
- Android NDK支持STL的正则表达式 undefined reference to 'std::regex_token_iterator
- C++ regex 正则表达式的使用
- .NET 正则表达式 Regex
- C#正则验证大全 Regex.IsMatch()正则表达式验证
- sscanf用法以及正则表达式的运用
- sscanf函数中正则表达式的运用
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace
- C++ - 正则表达式(regex) 迭代器(iterator) 的 详解 及 代码
- 正则表达式 切割字符串 split()方法的运用
- 正则表达式初运用之认证界面的实现代码
- python regex 正则表达式
- 邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)
- Java常用正则表达式验证工具类RegexUtils.java
- Java常用正则表达式验证工具类RegexUtils.java
- iOS开发之正则表达式的使用-RegexKitLite
- Oracle存储过程例子:运用了正则表达式、数组等
- 初学C++正则表达式(regex)
- C#控制台基础 正则表达式,regex,webclient下载博客园网页中的一张图片