下面的regex用于.NET regex引擎(FYI,它所做的是解析表单name="value1,value2“name2 = value3的命令行参数,其中引号是可选的)
(?<name>[^=]+)=?((?<quoted>\""?)(?<value>(?(quoted)[^\""]+|[^,]+))\""?,?)
我想在C++ 11中使用它。但是,我知道没有命名组或条件(?)不完全确定)在C++的regex语法中。
我之所以在这里问这个问题,是因为我还没有找到任何工具/网页,可以轻松地测试正则表达式并让它在C++ 11中工作(而几乎所有其他平台都有工具)。指向在线(或脱机) C++ 11兼容regex测试工具的链接可以显示组、子组和显示有用的错误消息,这也是一个可以接受的答案。
PS:我知道命令行解析是一个最适合解析器的练习,但是我已经使用这个简单的正则表达式足够长的时间了,对于我的大多数命令行工具来说,没有任何问题,我认为它有任何缺点。
发布于 2013-12-21 09:29:40
在C++11中对regex的支持仍然是粗略的,例如gcc只在4.9版中有良好的regex支持。您还没有指定您的环境,但是您可以找到关于什么是支持的和什么不是在这个问题上的详细信息。
最好的方法是使用boost regex库--您应该阅读理解标记子表达式和捕获。
为了使测试和实验变得更容易,按照您的要求,下面是一个准备好的环境,它适应boost文章中的示例,并设置了正确的编译标志g++-4.8 -O2 -Wall -pedantic -pthread -DBOOST_REGEX_MATCH_EXTRA main.cpp -lboost_regex:http://coliru.stacked-crooked.com/a/8950eb9c097b0db1
https://stackoverflow.com/questions/20709558
复制相似问题