2017-09-13 80 views
-2

我想創建一個正則表達式,這將使我出現,我使用\[start-flashcards\](.*?)\[end-flashcards\][start-flashcards][end-flashcards]之間PHP正則表達式的內容用方括號

但這種不匹配的一切。我肯定錯過了什麼?

<p>[start-flashcards]</p> 
    <p>[London|This is the capital city of the United Kingdom]</p> 
    <p>[Paris|This is the capital city of France]</p> 
    <p>[Madrid|This is the capital city of Spain]</p> 
    <p>[Tokyo|This is the capital city of Japan]</p> 
    <p>[Moscow|This is the capital city of Russia]</p> 
<p>[end-flashcards]</p> 

回答

0

你需要這樣的:

\[start-flashcards\]([\s\S]*?)\[end-flashcards\]

您已經使用.,不匹配的換行符。

編輯:

原來有實現相同的有效途徑:

使用您正則表達式\[start-flashcards\](.*?)\[end-flashcards\]/s修改標誌。該標誌允許.匹配換行符。

+0

不,不要使用'[\ s \ S]'。這是一個解決方法。使用'.'和'/ s'修飾符。 –

+0

當你說變通方法時,它是否有任何副作用? – CinCout

+1

內置'.'以更高效的方式更快地匹配。當然,我們沒有注意到,但仍然... –