dougou5844 2012-04-20 00:39
浏览 33
已采纳

PHP Regex匹配以下字符串示例

My subject looks like this:

[9] 20:30:40 [SUCCESS] s-a24:1337
2
8.87
4038047
35320
4002727
[10] 20:30:40 [SUCCESS] s-d28:1337
2
2.64
4038047
37363
4000684
[11] 20:30:40 [SUCCESS] s-b29:1337
2
0.56
4038047
33066
4004981
[66] 20:30:42 [FAILURE] s-b25:1337 Timed out, Killed by signal 9
2
1.16
4038047
35274
[67] 20:30:42 [FAILURE] s-b30:1337 Timed out, Killed by signal 9

I need to create a multi-dimentional array that will match

  • success/failure
  • descriptor (s-a24, s-d28, etc)
  • 5 rows of numbers that follow (can be any length)

There could be anywhere from 0 to 5 rows (5 rows is SUCCESS)

I'm absolutely inept in regex

What I started with is this, it does not work.

preg_match_all("/\[[0-9]+\](.*?)\[[0-9]+\]/",$output,$array);
  • 写回答

5条回答 默认 最新

  • duanpei4455 2012-04-20 09:22
    关注

    How about:

    $string = '[9] 20:30:40 [SUCCESS] s-a24:1337
    2
    8.87
    4038047
    35320
    4002727
    [10] 20:30:40 [SUCCESS] s-d28:1337
    2
    2.64
    4038047
    37363
    4000684
    [11] 20:30:40 [SUCCESS] s-b29:1337
    2
    0.56
    4038047
    33066
    4004981
    [66] 20:30:42 [FAILURE] s-b25:1337 Timed out, Killed by signal 9
    2
    1.16
    4038047
    35274
    [67] 20:30:42 [FAILURE] s-b30:1337 Timed out, Killed by signal 9
    ';
    
    preg_match_all("/\[.*?\[(SUCCESS|FAILURE)\]\s+([^:]+):[^
    ]+
    (?:([^[]+?)
    )?(?:([^[]+?)
    )?(?:([^[]+?)
    )?(?:([^[]+?)
    )?(?:([^[]+?)
    )?/m", $string, $matches, PREG_SET_ORDER);
    print_r($matches);
    

    output:

    Array
    (
        [0] => Array
            (
                [0] => [9] 20:30:40 [SUCCESS] s-a24:1337
    2
    8.87
    4038047
    35320
    4002727
    
                [1] => SUCCESS
                [2] => s-a24
                [3] => 2
                [4] => 8.87
                [5] => 4038047
                [6] => 35320
                [7] => 4002727
            )
    
        [1] => Array
            (
                [0] => [10] 20:30:40 [SUCCESS] s-d28:1337
    2
    2.64
    4038047
    37363
    4000684
    
                [1] => SUCCESS
                [2] => s-d28
                [3] => 2
                [4] => 2.64
                [5] => 4038047
                [6] => 37363
                [7] => 4000684
            )
    
        [2] => Array
            (
                [0] => [11] 20:30:40 [SUCCESS] s-b29:1337
    2
    0.56
    4038047
    33066
    4004981
    
                [1] => SUCCESS
                [2] => s-b29
                [3] => 2
                [4] => 0.56
                [5] => 4038047
                [6] => 33066
                [7] => 4004981
            )
    
        [3] => Array
            (
                [0] => [66] 20:30:42 [FAILURE] s-b25:1337 Timed out, Killed by signal 9
    2
    1.16
    4038047
    35274
    
                [1] => FAILURE
                [2] => s-b25
                [3] => 2
                [4] => 1.16
                [5] => 4038047
                [6] => 35274
            )
    
        [4] => Array
            (
                [0] => [67] 20:30:42 [FAILURE] s-b30:1337 Timed out, Killed by signal 9
    
                [1] => FAILURE
                [2] => s-b30
            )
    
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度