C++ Boost C正则表达式-如何返回所有匹配项

C++ Boost C正则表达式-如何返回所有匹配项,c++,regex,boost,C++,Regex,Boost,我有一个字符串“SolutionAN ANANANA SolutionBNabcabcSolutionX”,我想返回所有以Solution开头并在子字符串Solution之前结束的字符串 在使用boost::regex时,我无法为它生成正则表达式 我想将SolutionAN ANANANA、SolutionBNababc和SolutionX作为输出。我是boost中的regex新手,任何帮助都将不胜感激。您可以使用此regex (?s)Solution.*?(?=Solution|$) *?会

我有一个字符串
“SolutionAN ANANANA SolutionBNabcabcSolutionX”
,我想返回所有以
Solution
开头并在子字符串
Solution
之前结束的字符串

在使用boost::regex时,我无法为它生成正则表达式

我想将
SolutionAN ANANANA
SolutionBNababc
SolutionX
作为输出。我是boost中的regex新手,任何帮助都将不胜感激。

您可以使用此regex

(?s)Solution.*?(?=Solution|$)
*?
会将0与许多字符进行惰性匹配,也就是说,它会吃得尽可能少。 如果没有
,它会变得贪婪并尽可能多地吃

x(?=yz)
是一个前瞻,仅当x后跟yz时才与x匹配

$
是字符串的结尾



默认情况下,
与换行符不匹配。您应该使用
(?s)
正则表达式中的修饰符或使用使
匹配换行符的
mod_s
选项,我认为当字符串包含新行字符时,该正则表达式无法传递,如输入:Solution Avc\n mn Solutionxy,然后它将输出为Solution Avc和Solutionxy,而我希望输出为Solution Avc\n mn和解决方案XY您能告诉我如何使用match_no_dot_null选项吗?我认为这并不能解决问题:/@AmitPandey您可以尝试这个正则表达式
解决方案(.|[\n\r])*?(?=Solution |$)
。如果您说我可以给您代码,它仍然不能解决问题。