C++ 什么';它是一款轻便的C/C++;正则表达式库?

C++ 什么';它是一款轻便的C/C++;正则表达式库?,c++,c,regex,C++,C,Regex,可能重复: < >我正在寻找一个C++(C也是可以接受的)库,用于匹配正则表达式。图书馆应满足以下要求: 可在Windows(MSVC 7及更新版本)上构建 可以在Linux(g++3.4及更新版本)上构建 没有外部依赖关系;只允许使用C/C++运行时和STL 对于要匹配的小字符串(约200个字符),运行速度相当快 我不需要特殊的regexp风格(POSIX、PCRE等),所以一切都很好 到目前为止,我考虑了这些库: :有趣,但显然不支持Windows版本 看起来不太“小”(超过1MB压

可能重复:

< >我正在寻找一个C++(C也是可以接受的)库,用于匹配正则表达式。图书馆应满足以下要求:

  • 可在Windows(MSVC 7及更新版本)上构建
  • 可以在Linux(g++3.4及更新版本)上构建
  • 没有外部依赖关系;只允许使用C/C++运行时和STL
  • 对于要匹配的小字符串(约200个字符),运行速度相当快
我不需要特殊的regexp风格(POSIX、PCRE等),所以一切都很好

到目前为止,我考虑了这些库:

  • :有趣,但显然不支持Windows版本
  • 看起来不太“小”(超过1MB压缩源代码),并且在其构建系统中似乎不支持Windows
  • 可能符合要求,但我没有花太多时间试图弄清楚是否可以独立构建它

也许还有什么别的吗?

在编译器方面符合您的要求,尽管它依赖于Boost的其他部分

快速搜索“pcre windows”似乎说它实际上支持windows。我的系统上的
.so
文件<200kib,所以它似乎也不会占用那么多磁盘空间…

我的!但你必须下载它作为另一个工具的一部分-。正则表达式是在AURB库中的,基于PASCAL中的软件工具代码,移植了大量的C++更改。它非常小,大约30K或更少的源代码,支持ed风格的Rexex,在Windows和Linux上编译,我很乐意让其他人改进它

试试GNU正则表达式库

至少有一个windows端口:


< P> C++ Tr1标准库中包含正则表达式类。新版本的MSVC,它是一个编译器独立的实现。

出于好奇:为什么有人(你)将它移植到C++而不是使用另一个库?还是又过了很长时间,根本就没有其他库了?@Frerich这是一段非常古老的代码,如果可能的话,我不喜欢我的自由/开源软件项目依赖于其他项目。但是,如果你需要真正的高性能正则表达式,你显然应该使用类似于boost的东西——我的csvfix项目根本不需要这种功能。@Frerich顺便说一句,作为一个名字总是拼写错误的人,我能说法语Raabe吗?这是我失败的眼睛一直在读的东西,它看起来比你的实际名字更酷:-)@Neil:Hah!的确,它确实有某种凉意。也许我现在应该把它当作绰号。依赖关系正是促使我远离Boost.Regex(以及Boost.xpressive)的原因:-/谢谢你指出这一点!我在linux上开发的一个小程序中使用了这个库,并为windows交叉编译。windows版本以dll(regex2.dll)的形式使用此库。。。我在互联网的某个地方发现了dll(可能是gnuwin32.sourceforge.net);其他人已经建立了它,但它的工作像一个冠军。我相信它可以建立在Windows上不知何故,但似乎我必须为它自己编写的建设系统。我也在寻找一些几乎没有构建时依赖关系的东西。看看源代码,它似乎使用了可以在Windows上构建的CMake。构建过程是否会在某个时候失败?它所需要的只是一个简单的
cmake。。。;从外观上看,我确认了这一点:PCRE将构建在Windows上,而且很容易做到
cmake到pcre源的路径
,后跟
nmake
。默认情况下,它会生成Debug,但这只是对设置进行额外的arg/编辑,需要五分钟。如果可以的话,我会给你加1,以确认你的怀疑。:-}很高兴知道这并不难做到。现在,也许我也应该开始在代码库的其余部分使用cmake(到目前为止,我仍在使用手写的Make文件),这样PCRE的cmake构建时依赖性就不再重要了……不幸的是,依赖TR1特性(很可能)是一个太多的要求。MSVC实现是不可移植的(显然)。Regex是独立于编译器的,但是有太多的依赖项(在其他Boost库上)。