2017-07-18 64 views
0

你好,我想獲得所有的更新日誌狀態。我的changelog樣子:PHP的遞歸正則表達式更新日誌

# [2.6.0] - (2017-07-04) 

**Changed** 

* bla()Oflg;jhs 

**Fixed** 

* bla()Oflg;jhs 

**Updated** 

* bla()Oflg;jhs 

# [2.5.10] - (2017-06-29) 

**Updated** 

* bla()Oflg;jhs 

所以我想抓住[2.6.0] - (2017年7月4日) - 改變,固定和更新。我正則表達式採取再一個,我無法弄清楚如何使它;/

正則表達式:

(?># \[(\d+\.\d+\.\d+)\].+)\n*(?=\*{2}(?<status>.+)\*{2}) 
+0

使用'preg_match_all()'查找所有匹配項。 – Barmar

+0

我想從日期2017-07-04(更改,修正和更新)和2017-06-29(更新)。並非全部(更改,修正,更新,更新) – Ernestyno

+0

在正則表達式中重複一次,以便它在日期後匹配多個狀態。 – Barmar

回答

-1

使用重複圍繞着一組以匹配所有的狀態變化:

(?># \[(\d+\.\d+\.\d+)\].+)\n*((?=\*{2}(?<status>.+)\*{2})\n*\*.*\n*)+ 

請注意,<status>的值只是第一個狀態更改 - 無法將單個變量設置爲多個匹配。