php如何正则提取指定[]中的值

   假设某条日志为:NOTICE: 17-05-22 11:00:00 [/home/work/orp/php/phplib/saf/base/Log.php:28] logId[3599980370]     refer[] cookie[] uri[/order/commit/order?mod=emsg&transid=437995094] optime[1495421999.998    ] client_ip[10.67.49.39] local_ip[10.193.69.49]

一、目标:提取logId后面[]中的字符串

  分析:整条数据中有多个括号,需精确提取指定[]中的字符串

 

二、方案:

1. 方案1.

代码

 

结果

分析:

以上的正则表达式会自动匹配了logId[和最后一个]之间的字符串,包括了多个[],与我们的预期(提取logId[....]之间的字符串

 

2. 方案2.

代码

结果

 

分析:

已经基本提取到logId这个字符串,但是我们直接想要[]中的字符串

 

 

3. 方案3.

代码

结果:

 

分析:

现在就可以成功提取了,下面分析一下该正则表达式


                // logId : 首先匹配字符串logId
                // \[ : 再匹配一个[ ,因为 [ 属于特殊字符,所以需加一个转义符 \[
                // () : 括号()代表指定需要单独提取出来的内容
                // [^\]]* : 代表匹配包括非]在内的所有字符任意个
                // \] : 代表能够匹配一个]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件工程小施同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值