2009-09-29 4 views

ответ

0

Это зависит от языка, который вы используете. В Perl, вы могли бы сделать:

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

Другие языки обычно позволяют обеспечить функцию обратного вызова матч, который возвращает строку замены. А именно: В C#, вы можете сделать это:

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

Я предполагаю, что вы, возможно, придется конвертировать & в &amp; и так далее.

Если это так, скорее всего, библиотека или функция в зависимости от того, какой язык/платформа вы используете (например, в Java check out StringEscapeUtils). Укажите, какой язык вы используете, и кто-то здесь, несомненно, укажет вам на что-то подходящее.

0

Вы можете использовать хэш-переменную, что-то вроде:

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

Легко, чтобы сделать это практически в любом языке без с помощью регулярных выражений:

PHP:

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

Python:

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

т.д.

0

Спасибо всем. Я искал что-то, что мог бы использовать в Komodo Edit, поэтому переменные и условные утверждения не были опцией. Вот лучшее решение, которое я нашел, который был основан на учебник Сед на IBM Developerworks:

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

В Komodo Edit 5.x, используйте расширение moreKomodo, чтобы сохранить следующие поиска/замены regex search:

Поиск:

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

Заменить:

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