前段時間,我採集了四萬多條 壁紙 資料,格式類似下面那樣:
-------------------a123-------------------bakalamanaoapaqar-------------------c111213141516171
因為要導進mysql資料庫,我想要的最終格式是這樣:
a-1a-2a-3b-akb-alb-amb-anb-aob-apb-aqb-arc-1c-11c-21c-31c-41c-51c-61c-71
用sublime text3 搞翻了正則,連正則遞迴都學了 在sublime text3 還是不能實現。
(一個個搞,搞死人,就算用excel也麻煩。)
最後我寫了一個PHP去處理這件事情:
<?php$headPattern = '-*(\w)'; // 匹配頭$childPattern = '\r\n(\d+|\w+)'; // 匹配身體$pattern = "/{$headPattern}((?:$childPattern)(?2)*)/";// $pattern = "/-*(\w)((?:\r\n(\d+|\w+))(?2)*)/";$subject = "-------------------a12345678-------------------bakalamanaoapaqar-------------------c111213141516171";echo preg_replace_callback($pattern, function ($e) use($childPattern) { // 二次正則匹配 preg_match_all('/' . $childPattern . '/', $e[2], $match); $result = ''; foreach ($match[1] as $key => $value) { $result .= $e[1] . '-' . $value . "\n"; } return $result;}, $subject);
不解析,看代碼。