带有小bug的正则表达式

时间:2012-07-03 23:39:56

标签: c++ regex boost-regex

我有这个字符串

hey {Bobby|Apple|Peter}, nice to meet you {David}

和这个正则表达式:

(\{(\w+)(\|(\w+))*)\}

答案:

Bobby
Peter
David

然而,它没有得到“Apple”,我怎么能解决这个问题呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

重复不适用于群组。相反,尝试迭代地在字符串上使用find。可能最好先过滤掉{Bobby|Apple|Peter},从中获取名称,然后找到{David}并从中获取名称。如果你继续使用正则表达式,这将是两个发现。或者一个find,然后从结果中|分割。

查找的正则表达式:\{(\w+(?:\|\w+)*)\},然后使用组1(大括号内的所有)并拆分结果。

答案 1 :(得分:0)

您能否展示重现此问题的完整最小代码?问题可能在于您如何迭代捕获的组。