blueyi's notes

Follow Excellence,Success will chase you!

0%

C++中使用正则表达式

这里有一个博客链接,介绍的比较详细http://www.johndcook.com/blog/cpp_regex/
C++11中对正则表达式语法兼容以下6个:

  • ECMA-262 (ECMAScript) regular expressions (slightly modified?)
  • Basic POSIX regular expressions
  • Extended POSIX regular expressions
  • awk regular expressions
  • grep regular expressions
  • egrep regular expressions

首先,编译器需要开启对C++11的支持,例如如果使用的是GNU的g++添加编译参数-std=c++11即可。

C++内建的对正则表达式的支持是通过头文件regex。所以头文件中需要添加regex。下面举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <regex>

int main()
{
std::string str = "Hello world";
std::regex pattern("\\w+(?=ld)"); //声明正则表达式匹配规则
//此处regex_match返回false,因为regex_search只有整个字符串全部匹配时才返回true。
std::cout << regex_match(str, pattern) << std::endl;
//此处返回true
std::cout << regex_match(str, std::regex(".*ld")) << std::endl;
//regex_search返回true,因为它只要能够成功匹配就会返回true
std::cout << regex_search(str, pattern) << std::endl;
return 0;
}

更多关于regex的参考可以查看这里:http://www.cplusplus.com/reference/regex/

Welcome to my other publishing channels