2015-08-14 106 views
-5

嗨我需要拆分一個字符串遵循幾個規則,但我對正則表達式或php數組不熟悉。 因此字符串是這樣的:將正則表達式字符串拆分爲一個數組

A N K U N F T 11.08.15 
*** N *** 
11.08.15 xxx xxx X3 2830 14:25 17:50 
18.08.15 xxx xxx X3 2830 18:40 F882129 dsdsaidsaia F882129 xxxyxyagydaysd 

,我需要在字符串中得到這個數組:

date1 -> 11.08.15 

date2-> 18.08.15 

fnr1 -> X3 2830 

h1 - > 17:50 

fnr2 -> X3 2830 

h2 -> 18:40 

n1 -> dsdsaidsaia 

n2 -> xxxyxyagydaysd 

我已經做了在regex101如下:

爲FNR:

(\w{2}\s\d{4}) 

日期:

(\n\s\d{2}\W\d{2}\W\d{2}) 

爲H:

(\s{2}\d{2}\:\d{2}\n) 

但是我不知道如何從DATE2,fnr1從fnr2和H1從diferenciate DATE1。

而且我心中已經試過這在PHP的日期,它不輸出日期,我想:

$re = "/(\n\s\d{2}\W\d{2}\W\d{2})/"; 
$str = "";//the string 
preg_match($re, $str, $matches); 
print_r($matches); 

誰能幫助我嗎?先謝謝你!

+0

這個數據是一致的嗎?有點看起來像製表符分隔的數據...'\ t'是一個選項卡'\ h'是一個水平空間。 – chris85

+0

這不是一個寫代碼的服務器。你展示了你到目前爲止的工作,我們會(可能)嘗試幫助修復它。 –

+1

把這個問題放在你的問題中,它可能會被擱置。我可以回答這個問題,但他堅持讓我停止 – d0nut

回答

0

這將不正是你想要什麼:

^((?:\d{2}\.?){3}).*?(\w{2}\s\d{4}).*?(\d{2}:\d{2})(?:.*?(\b[a-z]+\b).*?(\b[a-z]+\b))?$ 

它分離,每行成不同的捕捉組的一切。讓我知道你是否有問題。

注意:確保標記gm開啓,以便^$使每行開始和結束;不是整個字符串。

Regex101

+0

@MiguelSousa你不能誠實地期待我在評論中讀到這個,你呢?請編輯您的問題,並讓我知道您已編輯它。 – d0nut

+0

我試過這個:http://3v4l.org/Lfvmg –

+0

@MiguelSousa http://3v4l.org/R1Xnt我說在我的筆記中使用全局搜索 – d0nut

相關問題