2012-01-19 62 views

回答

14

您確實需要DOTALL modifer /s,因爲每個默認的.點不包括換行符。 /g修飾符OTOH在PHP和PCRE中不合法。

你也應該使用.*?不太匹配。

3

由於.默認匹配除換行以外的每個字符,除非您輸入s開關。

查看正則表達式開關here的說明。

特別

S(PCRE_DOTALL)如果設定了此修正,在 圖案的點陣元字符的所有字符,包括換行匹配。沒有它, 新行被排除在外。

因此/(<pre>|<code>|\[code])(.*)(</pre>|</code>|\[/code])/is

(否g,使用preg_match_all)。

6

在PCRE中,「。」每一個字符不匹配,它的每一件事情,是不是一個換行符相匹配:

在字符類之外,在模式中的圓點匹配目標中的任何一個字符, 包括非打印字符,但不(默認)換行。

http://www.php.net/manual/en/regexp.reference.dot.php

嘗試類似[\ S \ S]來代替。

+3

或者,你知道,你可以聽我在寫我的時候彈出的其他三個有效答案中的任何一個。 – 2012-01-19 00:31:29

相關問題