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]php

1、目標:提取logId後面[]中的字符串

  分析:整條數據中有多個括號,需精確提取指定[]中的字符串html

 

2、方案:

1. 方案1.

代碼正則表達式

 

結果cookie

分析:ide

以上的正則表達式會自動匹配了logId[和最後一個]之間的字符串,包括了多個[],與咱們的預期(提取logId[....]之間的字符串日誌

 

2. 方案2.

代碼code

結果htm

 

分析:blog

已經基本提取到logId這個字符串,可是咱們直接想要[]中的字符串ip

 

 

3. 方案3.

代碼

結果:

 

分析:

如今就能夠成功提取了,下面分析一下該正則表達式

// logId : 首先匹配字符串logId
                // \[ : 再匹配一個[ ,由於 [ 屬於特殊字符,因此需加一個轉義符 \[
                // () : 括號()表明指定須要單獨提取出來的內容
                // [^\]]* : 表明匹配包括非]在內的全部字符任意個
                // \] : 表明可以匹配一個]
相關文章
相關標籤/搜索