来自.NET兼容的正则表达式的C ++ 11兼容正则表达式

时间:2013-12-20 18:09:57

标签: regex c++11

我有以下正则表达式与.NET正则表达式引擎一起使用(仅供参考,这样做是为了解析格式名称=“value1,value2”的命令行参数“name2 = value3,其中引号是可选的)

(?<name>[^=]+)=?((?<quoted>\""?)(?<value>(?(quoted)[^\""]+|[^,]+))\""?,?)

并希望在C ++ 11中使用它。但是,我知道在C ++的正则表达式语法中没有命名组或conditions(?不完全确定)。

我在这里问这个问题是因为我没有找到任何工具/网页,我可以轻松地测试正则表达式并使其在C ++ 11中工作(而几乎所有其他平台都有工具)。链接到在线(或离线)C ++ 11兼容的正则表达式测试工具,可以显示组,子组和显示有用的错误消息也是一个可接受的答案。

PS:我知道命令行解析是一个最适合解析器的练习,但是我已经使用这个简单的正则表达式而且对我的大多数命令行工具都没有任何问题我可以使用它有任何缺点

1 个答案:

答案 0 :(得分:0)

在C ++ 11中对正则表达式的支持仍然是粗略的,例如gcc将仅在版本4.9中具有良好的正则表达式支持。您尚未指定您的环境,但您可以找到有关支持的内容以及不支持的内容的详细信息{。{3}}。

您最好的选择是使用boost regex库 - 您应该阅读in this question

为了让您更容易进行测试和实验,正如您所要求的,这里有一个现成的环境,可以使用boost文章调整示例,并设置正确的编译标记g++-4.8 -O2 -Wall -pedantic -pthread -DBOOST_REGEX_MATCH_EXTRA main.cpp -lboost_regex:{{3} }