std::正则表达式无法按预期工作
std::regex not working as expected
我用谷歌搜索了一下,但仍然找不到错误。
为什么下面的代码打印false
,我期望true
?
#include <iostream>
#include <regex>
using namespace std;
int main()
{
std::string in("15n");
std::regex r("[1-9]+[0-9]*\n",
std::regex_constants::extended);
std::cout << std::boolalpha;
std::cout << std::regex_match(in, r) << std::endl;
}
未提供使用regex_search
的选项。
正则表达式中的""前面有一个额外的斜杠。代码打印true
,只删除斜杠。
#include <iostream>
#include <regex>
using namespace std;
int main()
{
std::string in("15n");
std::regex r("[1-9]+[0-9]*n",
std::regex_constants::extended);
std::cout << std::boolalpha;
std::cout << std::regex_match(in, r) << std::endl;
}
编辑:@rici在评论中解释了为什么这是一个问题:
Posix 标准的扩展正则表达式(用
std::regex_constants::extended
选择)不能识别 C 转义序列,例如n
。参见Posix基本定义9.4.2:"对前面有('')的普通字符的解释是未定义的。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- C++ 正则表达式未按预期工作 (regex_search)
- 正则表达式代码无缘无故停止工作
- 如何在 QT 框架工作C++中使用变量作为正则表达式模式
- C++ 中的正则表达式语句未按预期工作
- 通过getline()输入,正则表达式无法正常工作
- C++正则表达式与PCRE表达式一起不工作
- std::正则表达式无法按预期工作
- 带有 Qt 的正则表达式 - indexIn(const QString &) 无法按预期工作
- 在c++正则表达式中不工作
- 正则表达式可以,但不工作
- 正则表达式库在c++中不能正常工作
- 整数匹配正则表达式模式不工作