2016-08-25 20 views
1

所以我想捕獲Total ||\\n|}之間的所有內容。現在我現在的代碼如下所示:Preg Match獲得Total ||之間的所有內容和\ n |}

preg_match('/(Total ||)(.*?)(\\n)/', $jsonwiki, $competitors); 

但我的正則表達式失敗,並返回一個空數組,我不知道爲什麼?

+0

你沒試過嗎? –

+0

'/(Total ||)(。*?)(\\ n)/' – Sami

+0

但是無法正常工作。 – Sami

回答

4

我不知道正則表達式好,我只是增加了一些逃脫

(Total \|\|)(.*?)(\\\\n) 

https://regex101.com/r/nF2wU5/1

|\轉義爲它們在正則表達式引擎使用意思是特殊的東西,所以如果你想要一個文字管道,你需要\|

+0

也許可以解釋*爲什麼*這些角色需要逃脫? – Rizier123

+1

@ Rizier123是媽媽。 –

+1

否則你不允許今天在外面玩! :P – Rizier123

2

由於characters like |是正則表達式中的運算符,因此有合理數量的轉義需要用於這種類型的模式,所以通過添加反斜槓來轉義它們,可以告訴正則表達式解釋器它們應該逐字讀取;從字面上。

preg_match('/Total \|\|(.*)\\\\n\|}/', $jsonwiki, $competitors); 
       //↑ ↑  ↑↑ ↑ Backslash added 

Example

+1

停止偷我的點(開玩笑) –

+1

也許解釋*爲什麼*這些字符需要逃脫? – Rizier123

+1

Cheers @ Rizier123 –