2011-06-13 92 views
1

我有一個帶有換行符的文本體,並且我想替換所有換行符的實例,但不在<br />之間。標籤是[something][~something],其中something可以是任何東西。替換所有不在標籤內的換行符實例

對不起,不包括我已經嘗試過,但我不知道如何得到一個正則表達式來匹配不在其他東西內的東西。這甚至有可能嗎?

+0

如果您發佈了您試圖替換的html樣本,這將有所幫助。 – 2011-08-16 14:18:52

回答

-1

雖然記住的是,你不應該解析XML/HTML用正則表達式,這就是一個很好的例子:

#!/usr/bin/perl 
# 

$in = "foo\nbar\nbaz[something]else\nis\n[~something]\nHappening\n[something]else\nis\n[~something]here\n"; 
$out = ""; 

while ($in =~ s/^(.*?)(\[something\].*?\[~something\])//s) 
{ 
    my($before,$during) = ($1,$2); 
    $before =~ s/\n/<br \/>/g; 
    $out .= $before.$during; 
} 
$in =~ s/\n/<br \/>/g; 
$out .= $in; 
print $out; 

是的,不是你選擇的語言,但概念(解析分階段數據應該是可移植的。

+1

完全無用的發佈perl在這裏爲php – dynamic 2011-06-13 16:30:43

+0

其實Perl是我選擇的語言,但我不得不使用PHP。謝謝,像魅力一樣,我希望我可以將它移植到PHP和其他所有東西上。 – 2011-06-13 16:32:42

+1

在這裏發佈perl並不是「完全沒用」。用戶詢問基於正則表達式的問題,preg_match正在實現與Perl兼容的正則表達式(PCRE)PHP與Perl非常相似。 – 2011-06-13 18:33:15