我正在为本地 C++ 寻找一个健壮的、易于使用的正则表达式评估器,无论是平台独立的还是特定于 Windows 的。
要求:
- 不能使用 Boost 或 ACE 正则表达式库(很遗憾)
- 不能使用 .NET Regex(或任何托管代码)
主要要求是它应该是独立的和开放的。
C++11 现在包括对正则表达式的支持。它将独立于平台。你只需要一个最近的编译器。检查以下列表以了解使用哪一个。
http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
希望能帮助到你
尝试libpcre
如果你被困在 Windows 上,他们有一个应该可以工作的 Windows 端口。我知道e-texteditor使用它,所以至少这是它有效的证明:-)
如果您使用 Visual Studio,您可以使用 Visual C++ 2008 Feature Pack Release,它实现了一些 TR1,并包括正则表达式解析。得到它
GNU C 库支持正则表达式。它是开放的,并且 RE 代码似乎很容易提取。
我会支持PCRE的建议。我在 Windows 的 C++ 项目中使用过它,效果很好。它是免费的,甚至用于构建商业软件。它还实现了某种事实上的标准正则表达式语言,这将受到您的用户的欢迎。PCRE 当然与 Perl 兼容,Python 也使用相同的库。
原生 PCRE 接口有点笨拙且非常 C 风格,因此可能值得围绕它编写一个不错的 C++ 包装器。很可能已经有一个,但我不熟悉。
GNU C 库正则表达式工具(regcomp()、regexec() 和朋友)已损坏。改用 libetre;函数签名与 glibc 提供的签名匹配。 http://laurikari.net/tre/
C++11 及更高版本现在包含标准正则表达式库。
包括<regex>
标题,并使用。
为什么不使用 Microsoft ATL 的正则表达式库?肯尼·克尔最近写了一篇关于这方面的短文。
ATL 包括一个轻量级的正则表达式实现。虽然最初是 Visual C++ 的一部分,但它现在包含在 ATL Server 下载中。
类
CAtlRegExp
模板实现解析器和匹配引擎。...正则表达式语法定义在
atlrx.h
头文件的顶部。
CodePlex 的免费 ATL 服务器库和工具包括一个正则表达式解析器。请参阅CodePlex 存档中的 AtlServer
ATL Server 是一个 C++ 类库,允许开发人员构建服务型 C++ 应用程序和 Web 服务的客户端和服务器部分。它提供了构建大型 Internet 站点所需的许多功能,例如 SOAP 消息传递、缓存设施、线程设施、正则表达式处理、会话状态管理、性能监控、MIME 支持、与 IIS 的集成以及与安全性交互的类和加密基础设施。该库的早期版本是 Visual Studio 2002、Visual Studio 2003 和 Visual Studio 2005 的一部分。该项目从作为 Visual Studio 2005 SP1 的一部分发布的库版本开始。