角括号条件替换的正则表达式

时间:2009-09-29 23:17:25

标签: regex tags markup substitution komodoedit

是否可以创建单个正则表达式来替换<和>与他们在Komodo Edit中的实体等价物?

s/<|>/&lt;|&gt;/

6 个答案:

答案 0 :(得分:2)

我猜您可能需要将&转换为&amp;,依此类推。

如果是这种情况,则很可能是您正在使用的任何语言/平台上的库或函数(例如,在Java中查看StringEscapeUtils)。指出您正在使用哪种语言,这里的某些人无疑会指出适合您的语言。

答案 1 :(得分:1)

使用正则表达式,只需使用语言即可轻松完成此操作:

<强> PHP:

$xml = str_replace(array('>', '<'), array('&gt;','&lt;'), $xml);

<强>的Python:

xml = xml.replace('>', '&gt;').replace('<','&lt;');

答案 2 :(得分:0)

这取决于您使用的语言。在Perl中,您可以这样做:

s/([<>])/$1 eq '<' ? '&lt;' : '&gt;'/ge

其他语言通常允许您提供返回替换字符串的匹配回调函数。也就是说:在C#中,你可以这样做:

Regex.Replace("<", "([<>])", x => x.Value == "<" ? "&lt;" : "&gt;")

答案 3 :(得分:0)

您可以使用哈希变量,例如:

my %data;
$data{"<"} = '&lt;';
$data{">"} = '&gt;';
s/(<|>)/$data{$1}/g;

答案 4 :(得分:0)

谢谢大家。我正在寻找可以在Komodo Edit中使用的东西,因此变量和条件语句不是一个选项。这是我找到的最佳解决方案,它基于IBM Developerworks上的Sed教程:

s/<([^>]*)>([^<]*)<([^>]*)>/&lt;\1&gt;\2&lt;\3&gt;/

答案 5 :(得分:0)

Komodo Edit 5.x中,使用moreKomodo扩展程序保存以下查找/替换regex search

查找

<([^>]*)>([^<]*)<([^>]*)>

替换:

&lt;\1&gt;\2&lt;\3&gt;