C++ 2011 std::正则表达式根本不起作用
C++ 2011 std::regex doesn't work at all
首先,我想为我的英语道歉。
我正在做一个小型C++项目,我想保持它的小型化。主要的问题是我需要使用regex,但它们并没有按照我需要的方式工作。
这很好:
std::string s ("subject");
std::regex e ("(sub)(.*)");
if (std::regex_match (s,e))
std::cout << "string object matchedn";
这个也很好用:
std::string s ("0");
std::regex e ("[0-9]", std::regex::extended);
if (std::regex_match (s,e))
std::cout << "string object matchedn";
即使我将std::regex::extended更改为std::正则表达式::awk、basic或其他任何代码都不起作用:
std::string s ("00");
std::regex e ("[0-9]{2}", std::regex::extended);
if (std::regex_match (s,e))
std::cout << "string object matchedn";
我做错什么了吗?
我知道std::regex还没有完成,但我认为它们应该在这样一个简单的正则表达式中工作。
不管怎样,如果有人能给我一个小的regex库(请不要boost),我将不胜感激。
传统信息
我在Linux Ubuntu 12.10上工作,编译器是gcc>4.7
编辑:
@jalf:它编译了,但在最后一个结果中给了我一个错误的结果。它给出了一个错误。无法显示任何结果,因为我今天在客户端,无法访问该程序。
@KennyTM:是的,又是gcc/libstdc++,我一直在阅读这个论坛,寻找答案。再说一遍,我不能使用助推。
@Pete Becker:是的,它是gcc>4.7版本。记不清确切的版本了。
它确实有效。在VS2012上,我每个都有一个匹配项。
- "
subject
"与"(sub)(.*)
"匹配,因为它包含"sub"和.*(其他任何内容) - "
0
"与"[0-9]
"匹配,因为它包含一个介于0和9之间的数字 - "
00
"与"[0-9]{2}
"匹配,因为它包含介于0和9之间的两位数字
对我来说,在VS2008上这似乎很有效:
#include <iostream>
#include <regex>
void main()
{
std::string s ("00");
std::tr1::regex e ("[0-9]{2}", std::tr1::regex::extended);
if (std::tr1::regex_match (s,e))
std::cout << "string object matchedn";
}
至少如果你在windows上,那么根据MSDN上TR1正则表达式的摘要(http://msdn.microsoft.com/en-us/library/bb982727.aspx)它应该有效,只是在某些情况下,您可能需要转义大括号(请参阅"语法摘要"一节中的表)。如果您使用的是Linux,那么我想您需要查阅有关此主题的gcc文档。
请一位朋友在Linux上运行您的原始代码(gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)),但它不起作用,所以问题似乎是Linux特有的。逃避大括号也不起作用。
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 为什么在 while 循环中返回表达式不起作用
- 组合正则表达式部分使用 | 不起作用的 C++
- 如果检查不起作用,则 C++
- (C++) 确定不匹配的正则表达式捕获组
- 为什么正则表达式在 Java 中运行良好,但在 C++ 中不起作用
- 正则表达式C++不起作用
- Qt 中的不匹配数字正则表达式
- 我的 XML 标签正则表达式不起作用
- 若该语句不起作用,则该语句为真
- 不需要的正则表达式捕获
- 正则表达式 stl 不起作用
- 正则表达式迭代器在Cpp中不起作用
- 找不到c++正则表达式搜索模式
- 异常处理+多态性,如果异常方法在同一类中不起作用,则不起作用
- 我的最后一个正则表达式不起作用,但我无法弄清楚原因
- C++ 2011 std::正则表达式根本不起作用
- 使用正则表达式和 sed 命令替换C++代码中的' *'指针不起作用
- 无法弄清楚为什么正则表达式不起作用
- 正则表达式替换文件扩展名前缀放置不起作用 - 替换匹配项