2014-11-21 83 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