dongtu1958 2014-10-21 08:58
浏览 24
已采纳

简单或正则表达

I have a number of strings from my log file which I want to filter by regexp:

Oct 21 08:05:27 ph10001019 phs: got valid password for flat 200
Oct 21 08:07:34 ph10001014 phs: got valid password for flat 200
Oct 21 08:08:05 ph10001014 phs: got valid password for flat 200
Oct 21 08:19:25 ph10001019 phs: got valid password for flat 200: 1234
Oct 21 08:22:13 ph10001019 phs: got valid password for flat 200: 1234
Oct 21 08:24:12 ph10001019 phs: got valid password for flat 200: 1234
Oct 21 08:26:41 ph10001014 phs: got valid password for flat 200: 0034

This regexp returns string I need:

phs:\sgot\svalid\spassword.*200:\s0034

That's fine but I have two variants of last number. I tried folowing regexp but it returns empty string.

phs:\sgot\svalid\spassword.*200:\s(0034)|(4321)

What's wrong with second regexp?

  • 写回答

2条回答 默认 最新

  • duanbipu7601 2014-10-21 09:12
    关注

    I think you want to match only the last string. Avoid using \s for matching whitespace because \s would match newline characters also.

    phs:\h+got\h+valid\h+password.*?200:\h+(?:0034|4321)
    

    DEMO

    $data = <<< EOT
    Oct 21 08:05:27 ph10001019 phs: got valid password for flat 200
    Oct 21 08:07:34 ph10001014 phs: got valid password for flat 200
    Oct 21 08:08:05 ph10001014 phs: got valid password for flat 200
    Oct 21 08:19:25 ph10001019 phs: got valid password for flat 200: 1234
    Oct 21 08:22:13 ph10001019 phs: got valid password for flat 200: 1234
    Oct 21 08:24:12 ph10001019 phs: got valid password for flat 200: 1234
    Oct 21 08:26:41 ph10001014 phs: got valid password for flat 200: 0034
    EOT;
    preg_match_all('~phs:\h+got\h+valid\h+password.*?200:\h+(?:0034|4321)~', $data, $match);
    print_r($match);
    

    Output:

    Array
    (
        [0] => Array
            (
                [0] => phs: got valid password for flat 200: 0034
            )
    
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?