2014-11-21 53 views
1

考虑下面的文本字符串:正则表达式匹配特定模式(PHP)

groups:label(test:one):items:idx(0):value 

我想用下面的比赛结束了:

groups 
test:one 
items:idx(0):value 

我非常接近这个表达式,但它仍然不准确,我正在圈子:

([^:]+):label\((.+)\):(.+) 

请帮助您的专业知识。谢谢。

回答

2

你需要让内(.+)这是一个内部\(\)作为非贪婪,

([^:]+):label\((.+?)\):(.+) 

DEMO

OR

使用否定的字符类,而不是.+?

([^:]+):label\(([^()]*)\):(.+) 

DEMO

[^()]会匹配任何字符,但不()零次或多次。

+0

谢谢!两者似乎都很好。我选择使用第一个版本,因为它更易于阅读。 :) – TheDigitalOrchard 2014-11-21 16:52:05