2016-03-31 55 views
0

我試圖測試一種方法,我可以分解包含多個關於學術出版物的記錄的單個字符串。作爲一個有意義的分隔符,分隔一個記錄和下一個記錄是沒有用的。但我相信這可以完成,因爲每個記錄以日期後跟逗號和空格結尾(除非沒有附加記錄,在這種情況下僅以日期結束),例如「YYYY-MM -DD「。preg_match測試成功,但preg_split失敗

我已經開始用一個簡單的測試,涉及的字符串,並確認正則表達式識別我要尋找的模式:

$date="2012-09-12, "; 
if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]), $/",$date)) 
    { 
     echo("yes"); 
    }else{ 
     echo("no"); 

然而,當我嘗試通過把它帶到下一步真實數據和preg-split()的樣本,分割不起作用。我不明白爲什麼這個簡單的測試,從例1中的manual採取未能導致該字符串被拆分:

<?php 
$pubs="L.J. Santodonato, Y. Zhang, M. Feygenson, C.M. Parish, M.C. Gao, R.J. Weber, J.C. Neuefeind, Z. Tang, P.K. Liaw~Deviation from high-entropy configurations in the atomic distributions of a multi-principal-element alloy.~NATURE COMMUNICATIONS~6~2015~~~~0~~0~~2015-11-21, S. Liu, M.C. Gao, P.K. Liaw, Y. Zhang~Microstructures and mechanical properties of AlxCrFeNiTi 0.25 alloys.~JOURNAL OF ALLOYS AND COMPOUNDS~619~2015~610~~~0~~0~~2015-11-21"; 
$pubsArray = preg_split("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]), $/", $pubs); 
print_r($pubsArray); 
?> 

數據匹配相同模式的例子字符串$酒吧內發現的,但所有我曾經得到back是一個包含完整字符串的單個元素的數組。關於接下來要做什麼,我已經沒有想法,並且會很感激任何建議。

+0

所以在上面的字符串的情況下,你應該得到兩個元素的日期分裂? –

回答

0

但是我相信它可以完成,因爲每個記錄以日期後跟逗號和空格結尾(除非沒有附加記錄,在這種情況下僅以日期結束),如「YYYY-MM-DD」。

正如你想分裂字符串發生的日期,你可以使用這樣一個簡單的正則表達式這樣/\d{4}(-\d{2}){2}/。由於您未驗證日期,因此無需匹配所有月份和日期。

要在date處拆分字符串,您應該使用以下正則表達式。

正則表達式:/(?<=\d{4}(-\d{2}){2}),\s*/查找日期的發生後跟可選的逗號和空間分割上,[space]因爲我想你想保留出版日期。

PHP代碼

<?php 
$pubs="L.J. Santodonato, Y. Zhang, M. Feygenson, C.M. Parish, M.C. Gao, R.J. Weber, J.C. Neuefeind, Z. Tang, P.K. Liaw~Deviation from high-entropy configurations in the atomic distributions of a multi-principal-element alloy.~NATURE COMMUNICATIONS~6~2015~~~~0~~0~~2015-11-21, S. Liu, M.C. Gao, P.K. Liaw, Y. Zhang~Microstructures and mechanical properties of AlxCrFeNiTi 0.25 alloys.~JOURNAL OF ALLOYS AND COMPOUNDS~619~2015~610~~~0~~0~~2015-11-21"; 
$pubsArray = preg_split("/(?<=\d{4}(-\d{2}){2}),\s*/", $pubs); 
print_r($pubsArray); 
?> 

Regex101 Demo

Ideone Demo

+1

這個建議的確產生了期望的結果。非常感謝!我也很欣賞鏈接到Regex101。這看起來像一個非常有用的工具。 – Monica

+0

@Monica:不客氣。 –

相關問題