我敢肯定這是微不足道的,但我無法創建一個考慮到主題由多行組成的正則表達式。一個「m
」修飾符似乎沒有工作。php preg_replace匹配多行的正則表達式
回答
你試過''修飾符了嗎?意思是「像對待單線一樣對待。 'm'可以使用^和$行開頭和結尾。
Ah IC,明天將嘗試@work。還有一個問題,我如何匹配換行符,空格或製表符?到目前爲止,我已經提出了「[\\ n \\ t] *」,這是正確的? – 2010-02-10 21:37:18
只需使用'\ s',表示任何空格字符。 – 2010-02-10 21:40:27
\ s匹配'空白'(意思是\ t和空格),我相信它可能包含\ n以及與's'一起使用。 – ziya 2010-02-10 21:40:45
Maxwell特洛伊米爾頓國王是對的,但由於他的回答有點短,我會發布這個以及提供一些例子來說明。
首先,.
元字符默認不匹配換行符。許多正則表達式的實現都是如此,包括PHP的風格。這就是說,把文字:
$text = "Line 1\nLine 2\nLine 3";
和正則表達式
'/.*/'
那麼正則表達式將只匹配Line 1
。見自己:
preg_match('/.*/', $text, $match);
echo $match[0]; // echos: 'Line 1'
自.*
「停止匹配」 的\n
(新行字符)。如果你想讓它匹配換行符以及在你的正則表達式的末尾添加S-改性劑(又名DOT-ALL修改):
preg_match('/.*/s', $text, $match);
echo $match[0]; // echos: 'Line 1\nLine 2\nLine 3'
現在關於M-修飾符(多線):這將使^
不僅匹配輸入字符串的開始,而且還匹配每行的開始。與$
相同:它將使$
不僅匹配輸入字符串的結尾,而且還匹配每行的結尾。
一個例子:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/', $text, $matches);
print_r($matches);
將匹配僅3(在輸入的端)。但:
但使第m改性劑:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/m', $text, $matches);
print_r($matches);
所有(單一)位在每一行的末尾( '1', '2' 和 '3')是匹配的。
+1奇妙的答案 – blak3r 2012-04-05 02:00:41
- 1. 的preg_replace多串(PHP /正則表達式)
- 2. php preg_replace,正則表達式
- 3. PHP preg_replace - 正則表達式
- 4. Php preg_replace,正則表達式模式不匹配
- 5. 多行正則表達式組匹配
- 6. perl正則表達式匹配多行
- 7. 正則表達式匹配多表達
- 8. 正則表達式匹配的錶行
- 9. 正則表達式PHP的preg_replace交換比賽和匹配的多個實例
- 10. Php正則表達式,匹配模式?
- 11. php正則表達式匹配模式
- 12. 正則表達式匹配模式php
- 13. 正則表達式匹配
- 14. PHP的正則表達式匹配詞
- 15. PHP的正則表達式不匹配
- 16. 正則表達式匹配多個零
- 17. 正則表達式匹配
- 18. 正則表達式:匹配
- 19. 正則表達式的多個匹配
- 20. 多個匹配的正則表達式
- 21. MySQL的PHP的preg_replace,正則表達式
- 22. 正則表達式匹配
- 23. preg_replace正則表達式 - 跳過與模式不匹配的行的輸出
- 24. PHP正則表達式的preg_replace
- 25. PHP的preg_replace正則表達式
- 26. PHP的preg_replace正則表達式前瞻
- 27. 正則表達式 - 的preg_replace PHP - Understading
- 28. PHP的正則表達式preg_replace
- 29. PHP正則表達式的preg_replace
- 30. python正則表達式匹配多行和其他匹配
你是積極的正則表達式是正確的嗎? – Romain 2010-02-10 21:11:01
使用msu 詳細閱讀下面的鏈接http://zendf.wordpress.com/2012/02/08/php-preg_match-multi-line-match/ – Tofeeq 2012-02-08 13:44:57