1

我有这个字符串

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

这个正则表达式:

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

答案:

Bobby
Peter
David

但是,它没有得到“Apple”,我该如何解决这个问题呢?

谢谢!

4

2 回答 2

1

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

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

于 2012-07-03T23:45:48.253 回答
0

你能展示重现这个问题的完整的、最小的代码吗?问题可能在于您如何遍历捕获的组。

于 2012-07-03T23:50:42.633 回答