2010-05-02 51 views
2

仍然在正則表達式!我想學習它,但我仍然把頭撞向我的鑰匙圈! ;-)php - regex-preg_replace - 換行後的空間!

好吧,對你來說非常微不足道,我敢肯定!

假設我有這樣的刺痛,在\s是在空間actualy是...... \n哪裏斷行是..

編輯:

OTHERFIELD: Other text here...`\n` 
    DESCRIPTION: The quick brown fox jum`\s\n` 
    `\s`ps over the lazy dog 
    OTHERFIELD: Other text here...`\n` 

只是解釋:

每行總是以大寫字母后跟冒號開頭!

所以我分裂每一行的唯一方法是最後\n因爲這個原因我不能刪除它!

那麼我preg_splitting每個清洗符合這個表達式

/$\R?[^A-Z:]*/m 

,給我一個這樣的數組:

[DESCRIPTION] => The quick brown fox jumps over the lazy dog 

現在

,我需要做的是去除所有之後的空間A-Z:

我已經實現了這個正則表達式:/\s+(?![A-Z:])/m產生這種結果

DESCRIPTION: The quick brown fox jum ps over the lazy dog 

,你可以看到它離開jumps

之間的空間怎麼能有這樣的結果呢?

DESCRIPTION: The quick brown fox jumps over the lazy dog 

謝謝你的時間!

+0

你能寫一些你的實際代碼嗎?我不太明白你在用你的正則表達式做什麼。我也不明白你的目標。 A-Z只有大寫字母,而且您使用的是負向預測表達式? – 2010-05-02 15:27:45

+0

好吧,讓我這麼做吧 – 2010-05-02 15:29:22

+0

我試圖解釋,希望這是有道理的! – 2010-05-02 15:37:03

回答

2

試試這個正則表達式:

/\s+\n\s+/ 

這將匹配只有當它的周圍一個換行符的空白。您可能需要調整量詞以適合您的實際數據。

+0

我認爲他可能需要使用/ s修飾符(將字符串視爲單行)來完成該工作。 – 2010-05-02 15:35:32

+0

感謝您的迴應Gumbo,我已經嘗試過您的正則表達式,但不幸的是它不工作,我已更新我的問題,爲更好的解釋! – 2010-05-02 15:41:32

+1

爲什麼這不起作用?在將文本分割成行之前,您需要在一開始就應用此正則表達式。 – serg 2010-05-02 15:51:46