C++中的多行正则表达式
Multilines regex in C++
实际上,我试图在多行字符串中找到正则表达式,但我认为我在新行(等于''(之后找到下一个正则表达式的方式是错误的。这是我的正则表达式:
#include <iostream>
#include <fstream>
#include <sstream>
#include <regex>
#define USE ".*[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{2}.*(?:\n)*"
int main(int argc, char **argv)
{
std::stringstream stream;
std::filebuf *buffer;
std::fstream fs;
std::string str;
std::regex regex(USE);
if (argc != 2)
{
std::cerr << "Think to the use !" << std::endl;
return (-1);
}
fs.open(argv[1]);
if (fs)
{
stream << (buffer = fs.rdbuf());
str = stream.str();
if (std::regex_match(str, regex))
std::cout << "Yes" << std::endl;
else
std::cout << "No" << std::endl;
fs.close();
}
return (0);
}
构造正
则表达式对象时可以指定一些标志,请参阅有关详细信息,文档 http://en.cppreference.com/w/cpp/regex/basic_regex。
带有正则表达式::扩展标志的简短工作示例,其中在搜索中指定了换行符 '':
#include <iostream>
#include <regex>
int main(int argc, char **argv)
{
std::string str = "Hello, world! n This is new line 2 n and last one 3.";
std::string regex = ".*2.*n.*3.*";
std::regex reg(regex, std::regex::extended);
std::cout << "Input: " << str << std::endl;
if(std::regex_match(str, reg))
std::cout << "Match" << std::endl;
else
std::cout << "NOT match" << std::endl;
return 0;
}
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- C++:正则表达式匹配代码,打印多个匹配项?