在C ++中易于使用的正则表达式支持?

时间:2008-08-04 05:50:00

标签: c++ regex

我正在寻找一个强大的,易于使用的正则表达式评估程序,用于本机C ++,可以是独立于平台的,也可以是Windows特定的。

要求:

  • 不能使用Boost或ACE正则表达式库(不幸的是)
  • 无法使用.NET Regex(或任何托管代码)

主要要求是它应该是独立的并且是开放的。

10 个答案:

答案 0 :(得分:10)

尝试libpcre

如果你被困在窗户上,他们有一个应该有效的Windows端口。我知道e-texteditor使用它,所以至少证明它有效: - )

答案 1 :(得分:10)

C ++ 11现在包含对正则表达式的支持。 它将与平台无关。你只需要一个最近的编译器。 请查看以下列表以了解要使用的列表。

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

希望有所帮助

答案 2 :(得分:8)

如果您使用Visual Studio,则可以使用Visual C ++ 2008 Feature Pack版本,它实现了一些TR1,并包含正则表达式解析。 Get it

答案 3 :(得分:8)

Qt还有一个很好的Regular Expression实施QRegExp。它也是独立于平台的。

答案 4 :(得分:5)

GNU C Library支持regular expressions。它是开放的,RE代码似乎很容易提取。

答案 5 :(得分:4)

GNU C库正则表达式工具(regcomp(),regexec()和朋友)被破坏了。改用libetre;函数签名与glibc提供的签名相匹配。 http://laurikari.net/tre/

答案 6 :(得分:4)

我会推荐PCRE的建议。我在Windows中的C ++项目中使用过它,效果很好。即使是用于构建商业软件,它也是免费的。它还实现了一些事实上的标准正则表达式语言,欢迎您的用户使用。 PCRE当然与Perl兼容,Python也使用相同的库。

本机PCRE接口有点笨拙且非常C风格,因此可能值得为它编写一个不错的C ++包装器。很可能已经有一个,但我不熟悉任何一个。

答案 7 :(得分:3)

C ++ 11和转发现在包含standard regular expression library 添加<regex>标题,然后使用。

答案 8 :(得分:2)

为什么不使用Microsoft ATL的正则表达式库? Kenny Kerr最近写了short article

  

ATL包含一个轻量级的正则表达式实现。虽然   它最初是Visual C ++的一部分,现在包含在ATL Server中   下载。

     

CAtlRegExp类模板实现解析器和匹配   发动机。 ...

     

正则表达式语法定义在atlrx.h的顶部   头文件。

答案 9 :(得分:1)

CodePlex的免费ATL服务器库和工具包括一个正则表达式解析器。见AtlServer in the CodePlex Archive

  

ATL Server是一个允许开发人员构建的C ++类库   服务类型C ++应用程序和Web的客户端和服务器部分   服务。它提供了构建所需的许多功能   大型互联网站点,如SOAP消息传递,缓存   设施,线程设施,正则表达处理,   会话状态管理,性能监控,MIME支持,   与IIS和类集成以与安全性和安全性进行交互   加密基础设施。该库的早期版本是   Visual Studio 2002,Visual Studio 2003和Visual Studio的一部分   该项目已从作为Visual Studio 2005 SP1的一部分发布的库版本开始。