关闭

棘手的大数据处理问题(正则表达式)

标签: 大数据数据库mysql正则表达式
579人阅读 评论(0) 收藏 举报
分类:

前段时间,我采集了四万多条 壁纸 数据,格式类似下面那样:

-------------------a
1
2
3
-------------------b
ak
al
am
an
ao
ap
aq
ar
-------------------c
1
11
21
31
41
51
61
71

因为要导进mysql数据库,我想要的最终格式是这样:

a-1
a-2
a-3

b-ak
b-al
b-am
b-an
b-ao
b-ap
b-aq
b-ar

c-1
c-11
c-21
c-31
c-41
c-51
c-61
c-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 = "
-------------------a
1
2
3
4
5
6
7
8
-------------------b
ak
al
am
an
ao
ap
aq
ar
-------------------c
1
11
21
31
41
51
61
71
";

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);

不解析,看代码。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:134848次
    • 积分:2032
    • 等级:
    • 排名:第19677名
    • 原创:79篇
    • 转载:12篇
    • 译文:2篇
    • 评论:9条
    文章分类
    最新评论