/(<pre>|<code>|\[code])(.*)(</pre>|</code>|\[/code])/gi
正則表達式 - 爲什麼這個*(dot-star)匹配換行符?
這工作,如果我有一些諸如:
<code>foobar</code>
但如果我有一個斷行是這樣的:
<code>
Awesome
</code>
它不會匹配它, 我究竟做錯了什麼?
/(<pre>|<code>|\[code])(.*)(</pre>|</code>|\[/code])/gi
正則表達式 - 爲什麼這個*(dot-star)匹配換行符?
這工作,如果我有一些諸如:
<code>foobar</code>
但如果我有一個斷行是這樣的:
<code>
Awesome
</code>
它不會匹配它, 我究竟做錯了什麼?
您確實需要DOTALL
modifer /s
,因爲每個默認的.
點不包括換行符。 /g
修飾符OTOH在PHP和PCRE中不合法。
你也應該使用.*?
不太匹配。
由於.
默認匹配除換行以外的每個字符,除非您輸入s
開關。
查看正則表達式開關here的說明。
特別
S(PCRE_DOTALL)如果設定了此修正,在 圖案的點陣元字符的所有字符,包括換行匹配。沒有它, 新行被排除在外。
因此/(<pre>|<code>|\[code])(.*)(</pre>|</code>|\[/code])/is
。
(否g
,使用preg_match_all
)。
在PCRE中,「。」每一個字符不匹配,它的每一件事情,是不是一個換行符相匹配:
在字符類之外,在模式中的圓點匹配目標中的任何一個字符, 包括非打印字符,但不(默認)換行。
(http://www.php.net/manual/en/regexp.reference.dot.php)
嘗試類似[\ S \ S]來代替。
或者,你知道,你可以聽我在寫我的時候彈出的其他三個有效答案中的任何一個。 – 2012-01-19 00:31:29