【发布时间】:2009-09-29 23:17:25
【问题描述】:
是否可以在 Komodo Edit 中创建一个单一的正则表达式来将 替换为它们的实体等价物?
s/<|>/<|>/
【问题讨论】:
标签: regex tags markup substitution komodoedit
是否可以在 Komodo Edit 中创建一个单一的正则表达式来将 替换为它们的实体等价物?
s/<|>/<|>/
【问题讨论】:
标签: regex tags markup substitution komodoedit
我猜你可能需要将&amp; 转换为&amp; 等等。
如果是这种情况,则很可能存在您使用的任何语言/平台的库或函数(例如,在 Java 中,请查看 StringEscapeUtils)。指出您使用的语言,这里的某个人无疑会为您指出合适的内容。
【讨论】:
用几乎任何语言不使用正则表达式很容易做到这一点:
PHP:
$xml = str_replace(array('>', '<'), array('>','<'), $xml);
Python:
xml = xml.replace('>', '>').replace('<','<');
等等
【讨论】:
您可以使用哈希变量,例如:
my %data;
$data{"<"} = '<';
$data{">"} = '>';
s/(<|>)/$data{$1}/g;
【讨论】:
这取决于您使用的语言。在 Perl 中,你可以这样做:
s/([<>])/$1 eq '<' ? '<' : '>'/ge
其他语言通常允许您提供返回替换字符串的匹配回调函数。也就是说:在 C# 中,您可以这样做:
Regex.Replace("<", "([<>])", x => x.Value == "<" ? "<" : ">")
【讨论】:
谢谢大家。我正在寻找可以在Komodo Edit 中使用的东西,所以变量和条件语句不是一个选项。这是我找到的最佳解决方案,它基于IBM Developerworks 的 Sed 教程:
s/<([^>]*)>([^<]*)<([^>]*)>/<\1>\2<\3>/
【讨论】:
在Komodo Edit 5.x 中,使用moreKomodo 扩展名保存以下查找/替换regex search:
查找:
<([^>]*)>([^<]*)<([^>]*)>
替换:
<\1>\2<\3>
【讨论】: