2013-11-23 34 views
1

作爲前言,我是新手(並且確實很糟糕)編寫正則表達式。撰寫帶有特殊字符的正則表達式

我試圖使用PHP函數preg_split正則表達式,並正在尋找劃定由

* 
** 
` 

我有麻煩,因爲這些字符是命令。我如何寫一個正則表達式來做到這一點?

+0

用'\\'引用它們。 – ceving

+1

您也可以使用['preg_quote'](http://php.net/preg_quote)爲您自動轉義這些字符 - 這也有助於確保沒有混合,因爲反斜槓實際上會被處理兩次(一次由PHP,一次由PCRE)。 –

回答

3

對於PCRE和其他所謂的兼容的口味,你必須逃避這些外部character classes

.^$ * + ?() [ { \ | 

反引號沒有特殊的意義,所以你不需要逃避它。

preg_split('/\*{1,2}|`/', $text); 

Demo

注意:對於未來的參考,你可能要考慮使用preg_quote()

preg_quote()以str並提出一個反斜槓的每個人物的面前說是正則表達式語法的一部分。如果您需要在某些文本中匹配運行時字符串,並且該字符串可能包含特殊的正則表達式字符,這非常有用。

-1
preg_split("(?:\*{1,2}|\`)", $string);