第一条数据:
0 8615522081930 460012002444341 3547780320447365 0460010132016128 1325547643 0 1325547866 uninet 172.16.66.128 7121 60.28.50.210 7121  114 220.206.132.162 220.206.132.50 0
(共17列)第二条数据:0 8613132144205 460012113919752 0120400010194613 1460014408231491 1325546518 0 1325547866 3gnet 172.17.239.21 49388 210.51.19.202 80 3gs2.ifeng.com /userfiles/video/2011/12/31/ff98c708-1c68-466d-83be-69fd84f8547a280.mp4?fileid=29377951&mos=iphone&softid=ifengmo&softver=2.4&publishid=iphone001&userkey=99493fa5ed1cdf9e&ua=iPhone&screen=320x480&touch=yes&net=wap&opr=cm&imei=43da7d99b3f5507c53265de884dbe1759389f7ff AppleCoreMedia/1.0.0.8G4 (iPhone; U; CPU OS 4_3_1 like Mac OS X; zh_cn) 592 220.206.132.163 220.206.132.57 0
(共20列)第一条有三条记录为空,所以是17列。需求是要将这20列数据每列取出,转换成值对象用空格匹配不行,因为像这一列AppleCoreMedia/1.0.0.8G4 (iPhone; U; CPU OS 4_3_1 like Mac OS X; zh_cn)本身就有空格,那怎么办??有个想法,但是我不知道怎么实现:“对这20列每列分别进行匹配”求高人指点

解决方案 »

  1.   

    楼主又发了个帖子啊?结贴率已经是0了。下面是代码,但你的AppleCoreMedia/1.0.0.8G4 (iPhone; U; CPU OS 4_3_1 like Mac OS X; zh_cn),比较特殊,因为没有任何其他规律可以识别,将被作为两部分,所以需要做一次手工合并。但我想效果已经比较好了。
            Pattern pattern = Pattern.compile("([(].*[)])|(\\S+)");
            Matcher matcher = pattern
                    .matcher("0    8613132144205   460012113919752 0120400010194613    1460014408231491    1325546518  0   1325547866  3gnet 172.17.239.21 49388   210.51.19.202   80  3gs2.ifeng.com  /userfiles/video/2011/12/31/ff98c708-1c68-466d-83be-69fd84f8547a280.mp4?fileid=29377951&mos=iphone&softid=ifengmo&softver=2.4&publishid=iphone001&userkey=99493fa5ed1cdf9e&ua=iPhone&screen=320x480&touch=yes&net=wap&opr=cm&imei=43da7d99b3f5507c53265de884dbe1759389f7ff  AppleCoreMedia/1.0.0.8G4 (iPhone; U; CPU OS 4_3_1 like Mac OS X; zh_cn) 592 220.206.132.163 220.206.132.57  0");
            int i = 0;
            while (matcher.find()) {
                System.out.println(++i + ": " + matcher.group());
            }第一组,测试结果:
    1: 0
    2: 8615522081930
    3: 460012002444341
    4: 3547780320447365
    5: 0460010132016128
    6: 1325547643
    7: 0
    8: 1325547866
    9: uninet
    10: 172.16.66.128
    11: 7121
    12: 60.28.50.210
    13: 7121
    14: 114
    15: 220.206.132.162
    16: 220.206.132.50
    17: 0第二组,测试结果:
    1: 0
    2: 8613132144205
    3: 460012113919752
    4: 0120400010194613
    5: 1460014408231491
    6: 1325546518
    7: 0
    8: 1325547866
    9: 3gnet
    10: 172.17.239.21
    11: 49388
    12: 210.51.19.202
    13: 80
    14: 3gs2.ifeng.com
    15: /userfiles/video/2011/12/31/ff98c708-1c68-466d-83be-69fd84f8547a280.mp4?fileid=29377951&mos=iphone&softid=ifengmo&softver=2.4&publishid=iphone001&userkey=99493fa5ed1cdf9e&ua=iPhone&screen=320x480&touch=yes&net=wap&opr=cm&imei=43da7d99b3f5507c53265de884dbe1759389f7ff
    16: AppleCoreMedia/1.0.0.8G4
    17: (iPhone; U; CPU OS 4_3_1 like Mac OS X; zh_cn)
    18: 592
    19: 220.206.132.163
    20: 220.206.132.57
    21: 0第二组需要手工写代码把 16 和 17 合并下。