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

时间:2013-05-28 12:12:29

标签: c++ regex boost

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

使用boost::regex时,我无法为其制作正则表达式。

我想将SolutionAN ANANANASolutionBNababcSolutionX作为输出。我是regex的新手,我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式

(?s)Solution.*?(?=Solution|$)

.*?会匹配0到多个字符懒惰,即尽可能少吃。 没有?它会变得贪婪并尽可能多地吃。

x(?=yz)是一个前瞻,只有当后面跟着yz

才匹配x

$是字符串

的结尾
默认情况下,

.与换行符不匹配。您应该在正则表达式中使用(?s)修饰符或使用mod_s选项,这会导致.匹配换行符