2011-06-13 86 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

相关问题