2015-09-11 63 views
-1

我想了解如何使用正則表達式和preg_split分割字符串,但似乎無法理解在線解釋。 特別是括號內的選擇器似乎無法創建。Preg_split&Regex - 刪除括號,文字和冒號

我想要做2種不同的分裂。下面的例子:

  1. "[group:text]" -> "text"
  2. "icon_type:[search]:[asterisk]" -> array of 3 variables: [0]->"icon_type" [1]->"search" [2]->"asterisk"

什麼是兩個正則表達式的做到這一點?

我試過下面的例子1:/\[(group:)\]/,可悲的是這並沒有消除任何東西。

+0

我懷疑你會得到一些回票,除非你提供了一個你已經嘗試過的例子。另外,你可以澄清,如果你想在一個正則表達式中執行兩個匹配?或者你正在尋找兩個單獨的正則表達式? –

+0

重複的問題刪除 – Abayob

+2

這看起來像一個正常的正則表達式匹配,而不是拆分。 – melpomene

回答

1

而不是分割它更容易使用匹配。使用這種正則表達式使用preg_match_all

\b\w+(?=[:\]](?![^\]\[]*\])) 

RegEx Demo

代碼:

$re = '/\b\w+(?=[:\]](?![^\]\[]*\]))/'; 
$str = "[group:text]\nicon_type:[search]:[asterisk]"; 

preg_match_all($re, $str, $matches); 

print_r($matches); 

此正則表達式使用正預測先行斷言(?=[:\]])使用\w+其必須遵循的:]一個字相匹配,但它也必須沒有跟着0或更多的非[] ch aracters和]使用負向視向斷言(?![^\]\[]*\])

+1

必須爲該正則表達式測試程序添加書籤。看起來太棒了! –