查看完整版本: regular expression的pattern問題
頁: [1]

llllik 發表於 2016-1-21 06:28 PM

regular expression的pattern問題


pattern的意思 : | + 至少一個[以外的字元 + ]
我不太懂他為什麼會顯示以下結果

PHP :
$str = 'a]|]b|';
        $pattern = '/\|(?![^\[]+\])/';
        
        var_dump(preg_split($pattern, $str));
echo:
array (size=3)
  0 => string 'a]' (length=2)
  1 => string ']b' (length=2)
  2 => string '' (length=4)



<div></div>

theloserbm 發表於 2016-1-22 03:40 PM

這個有點複雜啊...

基本版的pattern是/\|/

(?!abc)是"的後面不能有abc

[^\[]+是至少一個不是[的字元

\]是]字元

要滿足[^\[]+\]的條件是
1. 裡面不能有[
2. 結束一定是]
3. ]前面有字

例子: a], abc], ]]
不滿足: ,

配合括號的反條件, 就是|後面不能有上面所說的東西

然後剛好2個|都能滿足, 所以就以|把整個拆成3份了
如果你在|後放個a]就不能滿足了


頁: [1]