作爲前言,我是新手(並且確實很糟糕)編寫正則表達式。撰寫帶有特殊字符的正則表達式
我試圖使用PHP函數preg_split
正則表達式,並正在尋找劃定由
*
**
`
我有麻煩,因爲這些字符是命令。我如何寫一個正則表達式來做到這一點?
作爲前言,我是新手(並且確實很糟糕)編寫正則表達式。撰寫帶有特殊字符的正則表達式
我試圖使用PHP函數preg_split
正則表達式,並正在尋找劃定由
*
**
`
我有麻煩,因爲這些字符是命令。我如何寫一個正則表達式來做到這一點?
對於PCRE
和其他所謂的兼容的口味,你必須逃避這些外部character classes。
.^$ * + ?() [ { \ |
的反引號沒有特殊的意義,所以你不需要逃避它。
preg_split('/\*{1,2}|`/', $text);
見Demo
注意:對於未來的參考,你可能要考慮使用preg_quote()
preg_quote()以str並提出一個反斜槓的每個人物的面前說是正則表達式語法的一部分。如果您需要在某些文本中匹配運行時字符串,並且該字符串可能包含特殊的正則表達式字符,這非常有用。
preg_split("(?:\*{1,2}|\`)", $string);
用'\\'引用它們。 – ceving
您也可以使用['preg_quote'](http://php.net/preg_quote)爲您自動轉義這些字符 - 這也有助於確保沒有混合,因爲反斜槓實際上會被處理兩次(一次由PHP,一次由PCRE)。 –