【问题标题】:Regex library not working correctly in c++正则表达式库在 C++ 中无法正常工作
【发布时间】:2013-01-01 23:54:51
【问题描述】:

我一直在寻找在 c++ 中使用正则表达式的地方,因为我想学习 C++ 中的正则表达式(如果你们有的话,也请给我一个逐步链接)。我正在使用 g++ 编译我的程序并在 Ubuntu 中工作。 早些时候我的程序没有编译,但后来我读了这篇文章,上面说要编译程序 “g++ -std=c++0x 样本.cpp” 使用正则表达式标头。 我的第一个程序运行正常,我尝试实现 regex_match

#include<stdio.h>
#include<iostream>
#include<regex>
using namespace std;

int main()
{
string str = "Hello world";
regex rx ("ello");

if(regex_match(str.begin(), str.end(), rx))
{ 
cout<<"True"<<endl;
}
else
cout<<"False"<<endl;
return(0);
}

我的程序返回 false ...(因为表达式不完全匹配) 我还通过使其匹配来重新检查它......它有效。 现在我正在编写另一个程序来实现 regex_replace 和 regex_search 。两者都不起作用(对于 regex_search,只需将上述程序中的 regex_match 替换为 regex_search。请帮助。我不知道我哪里出错了。

【问题讨论】:

  • 您向我们展示了您说可以正常工作的代码,然后问我们为什么其他代码不起作用,但您没有向我们展示该代码。您能想出一些可以帮助我们猜测其他代码有什么问题的方法吗?
  • 我告诉过你只需将 regex_match 替换为 regex_search .. 后者应该返回 true 但不是 ...

标签: c++ regex ubuntu


【解决方案1】:

GCC 不完全支持 &lt;regex&gt; 标头。

你可以看到 GCC 支持here

【讨论】:

  • 那么解决方案应该是什么?我必须停止与 GCC 合作才能使用正则表达式?
  • @Worlock Visual Studio 2012 支持&lt;regex&gt;,你也有 boost regex。
  • 感谢 Rapptz 提供的信息,但我想使用 GCC,并且是 GCC 的 boost regex 吗?如果可以,你能给我安装 boost 并使其与 gcc 兼容的指南吗?
  • @Worlock boost 只是一个您可以获得here 的库,只需像链接任何库一样链接它。它的大部分组件只是标题,但它们有一个在那里设置 boost 的指南。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2012-05-25
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多